unglq(3)
π¦ unglq β Library Functions Manual (yes, that's unglq(3), bestie) π¦
okay so picture this: you're deep in a Fortran/LAPACK situation, you've just run a gelqf, and now you need the actual Q matrix out in the open instead of vibing invisibly inside some reflectors. That's literally this whole page. The NAME says it all:
β¨ NAME β¨
unglq β the {un,or}glq squad: generate explicit Q from gelqf. π
πΈ SYNOPSIS πΈ
Functions π
subroutine cunglq (m, n, k, a, lda, tau, work, lwork, info)β the complex one, akaCUNGLQπsubroutine dorglq (m, n, k, a, lda, tau, work, lwork, info)β the double precision one, akaDORGLQπ¦subroutine sorglq (m, n, k, a, lda, tau, work, lwork, info)β the single precision real one, akaSORGLQπΈsubroutine zunglq (m, n, k, a, lda, tau, work, lwork, info)β theCOMPLEX*16one, akaZUNGLQβ
π Detailed Description π
There's not much up here, bestie β the real tea is all down in Function Documentation, where every single routine gets its own full glow-up. Four routines, four icons, one vibe. π
π Function Documentation π
π subroutine cunglq (integer m, integer n, integer k, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) tau, complex, dimension( * ) work, integer lwork, integer info)
CUNGLQ π
Purpose:
okay so CUNGLQ generates an M-by-N complex matrix Q with orthonormal rows, and Q is defined as the first M rows of a product of K elementary reflectors of order N, like this:
Q = H(k)**H . . . H(2)**H H(1)**H
which is exactly what CGELQF gives you back. no cap. β¨
Parameters
MβMisINTEGER. It's the number of rows of the matrixQ, and it has to beM >= 0. π«ΆNβNisINTEGER. It's the number of columns of the matrixQ, and the rule isN >= M. πKβKisINTEGER. It's the number of elementary reflectors whose product defines the matrixQ, and the constraint isM >= K >= 0. πΈAβAisCOMPLEX array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byCGELQFin the firstkrows of its array argumentA. On exit, it's theM-by-NmatrixQ. glow-up complete. π¦LDAβLDAisINTEGER. It's the first dimension of the arrayA, and you needLDA >= max(1,M). βTAUβTAUisCOMPLEX array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byCGELQF. πWORKβWORKisCOMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0, thenWORK(1)returns the optimalLWORK. π«LWORKβLWORKisINTEGER. It's the dimension of the arrayWORK, andLWORK >= max(1,M). For optimum performance,LWORK >= M*NB, whereNBis the optimal blocksize.
Also very important bestie: if LWORK = -1, then a workspace query is assumed. The routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. π«‘
INFOβINFOisINTEGER. The tea:= 0: successful exit;< 0: ifINFO = -i, the i-th argument has an illegal value. π
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 126 of file cunglq.f.
π¦ subroutine dorglq (integer m, integer n, integer k, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) tau, double precision, dimension( * ) work, integer lwork, integer info)
DORGLQ π
Purpose:
DORGLQ generates an M-by-N real matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:
Q = H(k) . . . H(2) H(1)
as returned by DGELQF. yes, this one's the real deal β no conjugate transpose here. π₯
Parameters
MβMisINTEGER. Number of rows of the matrixQ, withM >= 0. πNβNisINTEGER. Number of columns of the matrixQ, withN >= M. πKβKisINTEGER. The number of elementary reflectors whose product defines the matrixQ, withM >= K >= 0. πΈAβAisDOUBLE PRECISION array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byDGELQFin the firstkrows of its array argumentA. On exit, theM-by-NmatrixQ. π«LDAβLDAisINTEGER. The first dimension of the arrayA, andLDA >= max(1,M). βTAUβTAUisDOUBLE PRECISION array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byDGELQF. πWORKβWORKisDOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. π«ΆLWORKβLWORKisINTEGER. The dimension of the arrayWORK, andLWORK >= max(1,M). For optimum performanceLWORK >= M*NB, whereNBis the optimal blocksize.
And if LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. π
INFOβINFOisINTEGER.= 0: successful exit;< 0: ifINFO = -i, the i-th argument has an illegal value. π
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 126 of file dorglq.f.
πΈ subroutine sorglq (integer m, integer n, integer k, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tau, real, dimension( * ) work, integer lwork, integer info)
SORGLQ π
Purpose:
SORGLQ generates an M-by-N real matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:
Q = H(k) . . . H(2) H(1)
as returned by SGELQF. single precision edition, same energy. β¨
Parameters
MβMisINTEGER. The number of rows of the matrixQ,M >= 0. πNβNisINTEGER. The number of columns of the matrixQ,N >= M. π¦KβKisINTEGER. The number of elementary reflectors whose product defines the matrixQ, andM >= K >= 0. π«ΆAβAisREAL array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned bySGELQFin the firstkrows of its array argumentA. On exit, theM-by-NmatrixQ. periodt. πLDAβLDAisINTEGER. The first dimension of the arrayA,LDA >= max(1,M). πTAUβTAUisREAL array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned bySGELQF. πWORKβWORKisREAL array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. βLWORKβLWORKisINTEGER. The dimension of the arrayWORK,LWORK >= max(1,M). For optimum performanceLWORK >= M*NB, whereNBis the optimal blocksize.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. π«‘
INFOβINFOisINTEGER.= 0: successful exit;< 0: ifINFO = -i, the i-th argument has an illegal value. π
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 126 of file sorglq.f.
β subroutine zunglq (integer m, integer n, integer k, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * ) work, integer lwork, integer info)
ZUNGLQ π§
Purpose:
ZUNGLQ generates an M-by-N complex matrix Q with orthonormal rows, defined as the first M rows of a product of K elementary reflectors of order N:
Q = H(k)**H . . . H(2)**H H(1)**H
as returned by ZGELQF. and yes the **H is everywhere, it's giving conjugate transpose realness. π₯
Parameters
MβMisINTEGER. The number of rows of the matrixQ,M >= 0. πΈNβNisINTEGER. The number of columns of the matrixQ,N >= M. πKβKisINTEGER. The number of elementary reflectors whose product defines the matrixQ,M >= K >= 0. πAβAisCOMPLEX*16 array, dimension (LDA,N). On entry, the i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byZGELQFin the firstkrows of its array argumentA. On exit, theM-by-NmatrixQ. main character energy. πLDAβLDAisINTEGER. The first dimension of the arrayA,LDA >= max(1,M). πTAUβTAUisCOMPLEX*16 array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byZGELQF. πWORKβWORKisCOMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. π«
and bestie, LWORK for ZUNGLQ is literally right there waiting β part 2 has the rest, hold on π«Άπ
LWORKβ okay so this one is anINTEGER, and it's literally the dimension of theWORKarray. The rule isLWORK >= max(1,M). For optimum performance, go bigger:LWORK >= M*NB, whereNBis the optimal blocksize. Slay, but respect the math.
π¨ Workspace-query moment, bestie: ifLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. That's the whole vibe.
INFOβ also anINTEGER, and it's giving status-report main character energy:= 0: successful exit;< 0: ifINFO = -i, thei-th argument has an illegal value.
β¨ Author β¨
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 126 of file zunglq.f.
π€ Author (the generated one) π€
Generated automatically by Doxygen for LAPACK from the source code.
That's the unglq(3) saga wrapped, bestie. Source/version tea: LAPACK, version 3.12.0 β and the footer's date/page slot is literally unglq(3), so I'm not inventing extra date energy. π
β¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms