ungbr(3)
๐ธ ungbr(3) โ Library Functions Manual ๐ธ
okay bestie, pull up a chair, because this is the ungbr page from the Library Functions Manual, and it's genuinely a whole vibe. ๐ซถ This is part one of a long one, so hydrate first. ๐
The headline: this page covers the {un,or}gbr squad โ the routines that generate Q, P from gebrd. Or as the NAME section says it: {un,or}gbr: generate Q, P from gebrd. ๐
๐ NAME
ungbr โ {un,or}gbr: generate Q, P from gebrd
โจ SYNOPSIS โจ
๐ฆ Functions
subroutine cungbr (vect, m, n, k, a, lda, tau, work, lwork, info)โ the complex one, akaCUNGBRsubroutine dorgbr (vect, m, n, k, a, lda, tau, work, lwork, info)โ the double precision one, akaDORGBRsubroutine sorgbr (vect, m, n, k, a, lda, tau, work, lwork, info)โ the real one, akaSORGBRsubroutine zungbr (vect, m, n, k, a, lda, tau, work, lwork, info)โ the complex*16 one, akaZUNGBR
๐ง Detailed Description
so this section is literally just the section title, no extra prose, like a girl who shows up to the party already looking flawless and says nothing. ๐ The actual content lives in Function Documentation, right below. ๐
๐ Function Documentation ๐
๐ subroutine cungbr (character vect, integer m, integer n, integer k, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) tau, complex, dimension( * ) work, integer lwork, integer info)
CUNGBR
๐ Purpose:
!>
!> CUNGBR generates one of the complex unitary matrices Q or P**H
!> determined by CGEBRD when reducing a complex matrix A to bidiagonal
!> form: A = Q * B * P**H. Q and P**H are defined as products of
!> elementary reflectors H(i) or G(i) respectively.
!>
!> If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q
!> is of order M:
!> if m >= k, Q = H(1) H(2) . . . H(k) and CUNGBR returns the first n
!> columns of Q, where m >= n >= k;
!> if m < k, Q = H(1) H(2) . . . H(m-1) and CUNGBR returns Q as an
!> M-by-M matrix.
!>
!> If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**H
!> is of order N:
!> if k < n, P**H = G(k) . . . G(2) G(1) and CUNGBR returns the first m
!> rows of P**H, where n >= m >= k;
!> if k >= n, P**H = G(n-1) . . . G(2) G(1) and CUNGBR returns P**H as
!> an N-by-N matrix.
!>
like, it builds Q or P**H out of those elementary reflectors H(i) and G(i) โ no cap, that's the whole job. ๐
๐ Parameters
VECTโ it's aCHARACTER*1, bestie. Tells the routine whether you want the matrix Q or the matrix P**H, exactly as defined in the transformation applied byCGEBRD:= 'Q': generate Q;= 'P': generate P**H.
MโINTEGER. The number of rows of the matrix Q or P**H you're getting back.M >= 0. ๐ซNโINTEGER. The number of columns of the matrix Q or P**H you're getting back.N >= 0. And the constraints, listen up: ifVECT = 'Q', thenM >= N >= min(M,K); ifVECT = 'P', thenN >= M >= min(N,K). iykyk ๐ฏKโINTEGER. IfVECT = 'Q', it's the number of columns in the original M-by-K matrix that got reduced byCGEBRD. IfVECT = 'P', it's the number of rows in the original K-by-N matrix reduced byCGEBRD.K >= 0. ๐งฎAโ aCOMPLEXarray, dimension(LDA,N). On entry, it holds the vectors which define the elementary reflectors, as returned byCGEBRD. On exit? it's the M-by-N matrix Q or P**H. glow-up complete. โจLDAโINTEGER. The leading dimension of the arrayA.LDA >= M. ๐TAUโ aCOMPLEXarray, dimension(min(M,K))ifVECT = 'Q', or(min(N,K))ifVECT = 'P'.TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i), which determines Q or P**H, as returned byCGEBRDin its array argumentTAUQorTAUP. ๐WORKโ aCOMPLEXarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. ๐LWORKโINTEGER. The dimension of the arrayWORK.LWORK >= max(1,min(M,N)). For optimum performance,LWORK >= min(M,N)*NB, whereNBis the optimal blocksize. and โ big one โ 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. ๐จINFOโINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value. ๐
๐ธ Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 156 of file cungbr.f.
๐ subroutine dorgbr (character vect, 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)
DORGBR
๐ Purpose:
!>
!> DORGBR generates one of the real orthogonal matrices Q or P**T
!> determined by DGEBRD when reducing a real matrix A to bidiagonal
!> form: A = Q * B * P**T. Q and P**T are defined as products of
!> elementary reflectors H(i) or G(i) respectively.
!>
!> If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q
!> is of order M:
!> if m >= k, Q = H(1) H(2) . . . H(k) and DORGBR returns the first n
!> columns of Q, where m >= n >= k;
!> if m < k, Q = H(1) H(2) . . . H(m-1) and DORGBR returns Q as an
!> M-by-M matrix.
!>
!> If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**T
!> is of order N:
!> if k < n, P**T = G(k) . . . G(2) G(1) and DORGBR returns the first m
!> rows of P**T, where n >= m >= k;
!> if k >= n, P**T = G(n-1) . . . G(2) G(1) and DORGBR returns P**T as
!> an N-by-N matrix.
!>
same energy as CUNGBR but make it double precision and orthogonal instead of unitary. ๐ฆ
๐ Parameters
VECTโCHARACTER*1. Specifies whether the matrix Q or the matrix P**T is required, as defined in the transformation applied byDGEBRD:= 'Q': generate Q;= 'P': generate P**T.
MโINTEGER. The number of rows of the matrix Q or P**T to be returned.M >= 0. ๐ซNโINTEGER. The number of columns of the matrix Q or P**T to be returned.N >= 0. Constraints: ifVECT = 'Q',M >= N >= min(M,K); ifVECT = 'P',N >= M >= min(N,K). ๐ฏKโINTEGER. IfVECT = 'Q', the number of columns in the original M-by-K matrix reduced byDGEBRD. IfVECT = 'P', the number of rows in the original K-by-N matrix reduced byDGEBRD.K >= 0. ๐งฎAโDOUBLE PRECISIONarray, dimension(LDA,N). On entry, the vectors which define the elementary reflectors, as returned byDGEBRD. On exit, the M-by-N matrix Q or P**T. โจLDAโINTEGER. The leading dimension of the arrayA.LDA >= max(1,M). ๐TAUโDOUBLE PRECISIONarray, dimension(min(M,K))ifVECT = 'Q', or(min(N,K))ifVECT = 'P'.TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i), which determines Q or P**T, as returned byDGEBRDin its array argumentTAUQorTAUP. ๐WORKโDOUBLE PRECISIONarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. ๐LWORKโINTEGER. The dimension of the arrayWORK.LWORK >= max(1,min(M,N)). For optimum performanceLWORK >= min(M,N)*NB, whereNBis the optimal blocksize. 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. ๐จINFOโINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value. ๐
๐ธ Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 156 of file dorgbr.f.
๐ subroutine sorgbr (character vect, integer m, integer n, integer k, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tau, real, dimension( * ) work, integer lwork, integer info)
SORGBR
๐ Purpose:
!>
!> SORGBR generates one of the real orthogonal matrices Q or P**T
!> determined by SGEBRD when reducing a real matrix A to bidiagonal
!> form: A = Q * B * P**T. Q and P**T are defined as products of
!> elementary reflectors H(i) or G(i) respectively.
!>
!> If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q
!> is of order M:
!> if m >= k, Q = H(1) H(2) . . . H(k) and SORGBR returns the first n
!> columns of Q, where m >= n >= k;
!> if m < k, Q = H(1) H(2) . . . H(m-1) and SORGBR returns Q as an
!> M-by-M matrix.
!>
!> If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**T
!> is of order N:
!> if k < n, P**T = G(k) . . . G(2) G(1) and SORGBR returns the first m
!> rows of P**T, where n >= m >= k;
!> if k >= n, P**T = G(n-1) . . . G(2) G(1) and SORGBR returns P**T as
!> an N-by-N matrix.
!>
the single precision sibling, same routine energy, SGEBRD in the credits instead of DGEBRD. ๐ซถ
๐ Parameters
VECTโCHARACTER*1. Specifies whether the matrix Q or the matrix P**T is required, as defined in the transformation applied bySGEBRD:= 'Q': generate Q;= 'P': generate P**T.
MโINTEGER. The number of rows of the matrix Q or P**T to be returned.M >= 0. ๐ซNโINTEGER. The number of columns of the matrix Q or P**T to be returned.N >= 0. Constraints: ifVECT = 'Q',M >= N >= min(M,K); ifVECT = 'P',N >= M >= min(N,K). ๐ฏKโ ...and the rest of theKdeets roll in on the next part, bestie โ hold that thought ๐
<!-- continuation: more of sorgbr's K parameter and the zungbr routine follow in part 2 -->
KโINTEGER, bestie. IfVECT = 'Q', itโs the number of columns in the originalM-by-Kmatrix reduced bySGEBRD. IfVECT = 'P', itโs the number of rows in the originalK-by-Nmatrix reduced bySGEBRD. AndK >= 0, periodt. ๐Aโ aREALarray, dimension(LDA,N). On entry, it holds the vectors which define the elementary reflectors, exactly as returned bySGEBRD. On exit, itโs theM-by-NmatrixQorP**T. Iconic glow-up, honestly โจ.LDAโINTEGER, the leading dimension of the arrayA.LDA >= max(1,M). No cap.TAUโ aREALarray, dimension(min(M,K))ifVECT = 'Q', or(min(N,K))ifVECT = 'P'.TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i), which determinesQorP**T, as returned bySGEBRDin its array argumentTAUQorTAUP. Slay.WORKโREALarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. Lowkey useful ๐ซถ.LWORKโINTEGER, the dimension of the arrayWORK.LWORK >= max(1,min(M,N)). For optimum performance,LWORK >= min(M,N)*NB, whereNBis the optimal blocksize.
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.
INFOโINTEGER.= 0: successful exit ๐< 0: ifINFO = -i, thei-th argument had an illegal value ๐
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 156 of file sorgbr.f.
๐ ZUNGBR
subroutine zungbr (character vect, 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)
โจ Purpose โจ
Okay so ZUNGBR generates one of the complex unitary matrices Q or P**H determined by ZGEBRD when reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q and P**H are defined as products of elementary reflectors H(i) or G(i) respectively.
If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q is of order M:
- if
m >= k,Q = H(1) H(2) . . . H(k)andZUNGBRreturns the firstncolumns ofQ, wherem >= n >= k; - if
m < k,Q = H(1) H(2) . . . H(m-1)andZUNGBRreturnsQas anM-by-Mmatrix.
If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**H is of order N:
- if
k < n,P**H = G(k) . . . G(2) G(1)andZUNGBRreturns the firstmrows ofP**H, wheren >= m >= k; - if
k >= n,P**H = G(n-1) . . . G(2) G(1)andZUNGBRreturnsP**Has anN-by-Nmatrix.
๐ธ Parameters ๐ธ
VECTโCHARACTER*1. Specifies whether the matrixQor the matrixP**His required, as defined in the transformation applied byZGEBRD:= 'Q': generateQ;= 'P': generateP**H.
MโINTEGER, the number of rows of the matrixQorP**Hto be returned.M >= 0.NโINTEGER, the number of columns of the matrixQorP**Hto be returned.N >= 0.- If
VECT = 'Q',M >= N >= min(M,K); - if
VECT = 'P',N >= M >= min(N,K).
- If
KโINTEGER. IfVECT = 'Q', the number of columns in the originalM-by-Kmatrix reduced byZGEBRD. IfVECT = 'P', the number of rows in the originalK-by-Nmatrix reduced byZGEBRD.K >= 0.AโCOMPLEX*16array, dimension(LDA,N). On entry, the vectors which define the elementary reflectors, as returned byZGEBRD. On exit, theM-by-NmatrixQorP**H.LDAโINTEGER, the leading dimension of the arrayA.LDA >= M.TAUโCOMPLEX*16array, dimension(min(M,K))ifVECT = 'Q', or(min(N,K))ifVECT = 'P'.TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i), which determinesQorP**H, as returned byZGEBRDin its array argumentTAUQorTAUP.WORKโCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKโINTEGER, the dimension of the arrayWORK.LWORK >= max(1,min(M,N)). For optimum performance,LWORK >= min(M,N)*NB, whereNBis the optimal blocksize.
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.
INFOโINTEGER.= 0: successful exit ๐< 0: ifINFO = -i, thei-th argument had an illegal value ๐
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 156 of file zungbr.f.
And thatโs the whole page, bestie ๐ซถ โ generated automatically by Doxygen for LAPACK from the source code, LAPACK Version 3.12.0, and this manual page is ungbr(3). The footer only gives source/version vibes, no extra date line to quote. Catch you in the next group chat ๐
โจ
๐ฆ 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