geqr(3)
π¦ geqr(3) β QR factor, flexible
Library Functions Manual bestie, and we are so in our flexible QR factor era. β¨
π NAME π
geqr β geqr: QR factor, flexible
πΈ SYNOPSIS πΈ
π§ Functions
subroutine cgeqr (m, n, a, lda, t, tsize, work, lwork, info)βCGEQRsubroutine dgeqr (m, n, a, lda, t, tsize, work, lwork, info)βDGEQRsubroutine sgeqr (m, n, a, lda, t, tsize, work, lwork, info)βSGEQRsubroutine zgeqr (m, n, a, lda, t, tsize, work, lwork, info)βZGEQR
π Detailed Description
Okay so the original page literally leaves this section empty β no cap, nothing to see here. The actual lore starts in Function Documentation below. π
π₯ Function Documentation
π subroutine cgeqr
subroutine cgeqr (integer m, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) t, integer tsize, complex, dimension( * ) work, integer lwork, integer info)
CGEQR
β¨ Purpose
CGEQR computes a QR factorization of a complex M-by-N matrix A:
A = Q * ( R ),
( 0 )
where:
Qis aM-by-Morthogonal matrix;Ris an upper-triangularN-by-Nmatrix;0is a(M-N)-by-Nzero matrix, ifM > N.
π Parameters
MβMisINTEGER. The number of rows of the matrixA.M >= 0.NβNisINTEGER. The number of columns of the matrixA.N >= 0.AβAisCOMPLEX array, dimension(LDA,N). On entry, theM-by-NmatrixA. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-Nupper trapezoidal matrixR(Ris upper triangular ifM >= N); the elements below the diagonal are used to store part of the data structure to representQ.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).TβTisCOMPLEX array, dimension(MAX(5,TSIZE)). On exit, ifINFO = 0,T(1)returns optimal (or either minimal or optimal, if query is assumed)TSIZE. SeeTSIZEfor details. RemainingTcontains part of the data structure used to representQ. If one wants to apply or constructQ, then one needs to keepT(in addition toA) and pass it to further subroutines.TSIZEβTSIZEisINTEGER. IfTSIZE >= 5, the dimension of the arrayT. IfTSIZE = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfTSIZE = -1, the routine calculates optimal size ofTfor the optimum performance and returns this value inT(1). IfTSIZE = -2, the routine calculates minimal size ofTand returns this value inT(1).WORKβ (workspace)COMPLEX array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)contains optimal (or either minimal or optimal, if query was assumed)LWORK. SeeLWORKfor details.LWORKβLWORKisINTEGER. The dimension of the arrayWORK.LWORK >= 1. IfLWORK = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfLWORK = -1, the routine calculates optimal size ofWORKfor the optimal performance and returns this value inWORK(1). IfLWORK = -2, the routine calculates minimal size ofWORKand returns this value inWORK(1).INFOβINFOisINTEGER.= 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.
π Further Details
The whole point of this interface is maximum freedom for the developers β creating any QR factorization algorithm they wish. The triangular (trapezoidal) R has to be stored in the upper part of A. The lower part of A and the array T can be used to store any relevant information for applying or constructing the Q factor. The WORK array can safely be discarded after exit. β¨
β οΈ Caution: One should not expect the sizes ofTandWORKto be the same from one LAPACK implementation to the other, or even from one execution to the other. A workspace query (forTandWORK) is needed at each execution. However, for a given execution, the size ofTandWORKare fixed and will not change from one query to the next.
𧬠Further Details particular to this LAPACK implementation
These details are particular for this LAPACK implementation. Users should not take them for granted. These details may change in the future, and are not likely true for another LAPACK implementation. These details are relevant if one wants to try to understand the code. They are not part of the interface.
In this version,
T(2): row block size (MB)
T(3): column block size (NB)
T(6:TSIZE): data structure needed for Q, computed by
CLATSQR or CGEQRT
Depending on the matrix dimensions M and N, and row and column block sizes MB and NB returned by ILAENV, CGEQR will use either CLATSQR (if the matrix is tall-and-skinny) or CGEQRT to compute the QR factorization. π«Ά
π Definition at line 174 of file cgeqr.f.
π subroutine dgeqr
subroutine dgeqr (integer m, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) t, integer tsize, double precision, dimension( * ) work, integer lwork, integer info)
DGEQR
β¨ Purpose
DGEQR computes a QR factorization of a real M-by-N matrix A:
A = Q * ( R ),
( 0 )
where:
Qis aM-by-Morthogonal matrix;Ris an upper-triangularN-by-Nmatrix;0is a(M-N)-by-Nzero matrix, ifM > N.
π Parameters
MβMisINTEGER. The number of rows of the matrixA.M >= 0.NβNisINTEGER. The number of columns of the matrixA.N >= 0.AβAisDOUBLE PRECISION array, dimension(LDA,N). On entry, theM-by-NmatrixA. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-Nupper trapezoidal matrixR(Ris upper triangular ifM >= N); the elements below the diagonal are used to store part of the data structure to representQ.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).TβTisDOUBLE PRECISION array, dimension(MAX(5,TSIZE)). On exit, ifINFO = 0,T(1)returns optimal (or either minimal or optimal, if query is assumed)TSIZE. SeeTSIZEfor details. RemainingTcontains part of the data structure used to representQ. If one wants to apply or constructQ, then one needs to keepT(in addition toA) and pass it to further subroutines.TSIZEβTSIZEisINTEGER. IfTSIZE >= 5, the dimension of the arrayT. IfTSIZE = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfTSIZE = -1, the routine calculates optimal size ofTfor the optimum performance and returns this value inT(1). IfTSIZE = -2, the routine calculates minimal size ofTand returns this value inT(1).WORKβ (workspace)DOUBLE PRECISION array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)contains optimal (or either minimal or optimal, if query was assumed)LWORK. SeeLWORKfor details.LWORKβLWORKisINTEGER. The dimension of the arrayWORK.LWORK >= 1. IfLWORK = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfLWORK = -1, the routine calculates optimal size ofWORKfor the optimal performance and returns this value inWORK(1). IfLWORK = -2, the routine calculates minimal size ofWORKand returns this value inWORK(1).INFOβINFOisINTEGER.= 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.
π Further Details
π Further Details (the dgeqr ones)
Okay so the whole point of this interface is maximum freedom for the devs β like, they get to build literally any QR factorization algorithm they vibe with. The triangular (trapezoidal) R has to live in the upper part of A. The lower part of A and the array T? Free real estate β use them to stash whatever info you need for applying or constructing the Q factor. And the WORK array? Bestie, you can throw it away after exit, it's done its job. π«Ά
β οΈ Caution, no cap: do not expect the sizes ofTandWORKto match from one LAPACK implementation to another β or even from one execution to the next. You need a workspace query (forTandWORK) at each execution. That said, for a given execution, the sizes ofTandWORKare fixed and will not change from one query to the next. β¨
π Further Details particular to this LAPACK implementation
Okay these deets are specific to this LAPACK implementation β do not take them for granted, bestie. They may change in the future, and they're lowkey not likely true for another LAPACK implementation. These are the deets that matter if you're trying to actually understand the code. They are not part of the interface. π
In this version:
T(2): row block size (MB)
T(3): column block size (NB)
T(6:TSIZE): data structure needed for Q, computed by
DLATSQR or DGEQRT
Depending on the matrix dimensions M and N, and row and column block sizes MB and NB returned by ILAENV, DGEQR will use either DLATSQR (if the matrix is tall-and-skinny) or DGEQRT to compute the QR factorization. π¦
Definition at line 174 of file dgeqr.f.
πΈ subroutine sgeqr β the single-precision girlie β¨
subroutine sgeqr (integer m, integer n, real, dimension( lda, * ) a, integer
lda, real, dimension( * ) t, integer tsize, real, dimension( * ) work,
integer lwork, integer info)
SGEQR
π Purpose:
SGEQR computes a QR factorization of a real M-by-N matrix A:
A = Q * ( R ),
( 0 )
where:
Qis a M-by-M orthogonal matrix;Ris an upper-triangular N-by-N matrix;0is a (M-N)-by-N zero matrix, if M > N.
π§ Parameters
MβMisINTEGER. The number of rows of the matrixA.M >= 0.NβNisINTEGER. The number of columns of the matrixA.N >= 0.AβAisREALarray, dimension(LDA,N). On entry, the M-by-N matrixA. On exit, the elements on and above the diagonal of the array contain the min(M,N)-by-N upper trapezoidal matrixR(Ris upper triangular if M >= N); the elements below the diagonal are used to store part of the data structure to representQ. πLDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).TβTisREALarray, dimension(MAX(5,TSIZE)). On exit, ifINFO = 0,T(1)returns optimal (or either minimal or optimal, if query is assumed)TSIZE. SeeTSIZEfor details. RemainingTcontains part of the data structure used to representQ. If one wants to apply or constructQ, then one needs to keepT(in addition toA) and pass it to further subroutines. π₯TSIZEβTSIZEisINTEGER. IfTSIZE >= 5, the dimension of the arrayT. IfTSIZE = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfTSIZE = -1, the routine calculates optimal size ofTfor the optimum performance and returns this value inT(1). IfTSIZE = -2, the routine calculates minimal size ofTand returns this value inT(1).WORKβ (workspace)REALarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)contains optimal (or either minimal or optimal, if query was assumed)LWORK. SeeLWORKfor details.LWORKβLWORKisINTEGER. The dimension of the arrayWORK.LWORK >= 1. IfLWORK = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfLWORK = -1, the routine calculates optimal size ofWORKfor the optimal performance and returns this value inWORK(1). IfLWORK = -2, the routine calculates minimal size ofWORKand returns this value inWORK(1).INFOβINFOisINTEGER.= 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.
π Further Details
The goal of the interface is to give maximum freedom to the developers for creating any QR factorization algorithm they wish. The triangular (trapezoidal) R has to be stored in the upper part of A. The lower part of A and the array T can be used to store any relevant information for applying or constructing the Q factor. The WORK array can safely be discarded after exit.
β οΈ Caution: One should not expect the sizes ofTandWORKto be the same from one LAPACK implementation to the other, or even from one execution to the other. A workspace query (forTandWORK) is needed at each execution. However, for a given execution, the size ofTandWORKare fixed and will not change from one query to the next.
π Further Details particular to this LAPACK implementation:
These details are particular for this LAPACK implementation. Users should not take them for granted. These details may change in the future, and are not likely true for another LAPACK implementation. These details are relevant if one wants to try to understand the code. They are not part of the interface. π
In this version,
T(2): row block size (MB)
T(3): column block size (NB)
T(6:TSIZE): data structure needed for Q, computed by
SLATSQR or SGEQRT
Depending on the matrix dimensions M and N, and row and column block sizes MB and NB returned by ILAENV, SGEQR will use either SLATSQR (if the matrix is tall-and-skinny) or SGEQRT to compute the QR factorization. π«
Definition at line 174 of file sgeqr.f.
π¦ subroutine zgeqr β double complex, double the drama π
subroutine zgeqr (integer m, integer n, complex*16, dimension( lda, * ) a,
integer lda, complex*16, dimension( * ) t, integer tsize, complex*16,
dimension( * ) work, integer lwork, integer info)
ZGEQR
π Purpose:
ZGEQR computes a QR factorization of a complex M-by-N matrix A:
A = Q * ( R ),
( 0 )
where:
Qis a M-by-M orthogonal matrix;Ris an upper-triangular N-by-N matrix;0is a (M-N)-by-N zero matrix, if M > N.
π§ Parameters
MβMisINTEGER. The number of rows of the matrixA.M >= 0.NβNisINTEGER. The number of columns of the matrixA.N >= 0.AβAisCOMPLEX*16array, dimension(LDA,N). On entry, the M-by-N matrixA. On exit, the elements on and above the diagonal of the array contain the min(M,N)-by-N upper trapezoidal matrixR(Ris upper triangular if M >= N); the elements below the diagonal are used to store part of the data structure to representQ. πLDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).TβTisCOMPLEX*16array, dimension(MAX(5,TSIZE)). On exit, ifINFO = 0,T(1)returns optimal (or either minimal or optimal, if query is assumed)TSIZE. SeeTSIZEfor details. RemainingTcontains part of the data structure used to representQ. If one wants to apply or constructQ, then one needs to keepT(in addition toA) and pass it to further subroutines. π₯TSIZEβTSIZEisINTEGER. IfTSIZE >= 5, the dimension of the arrayT. IfTSIZE = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfTSIZE = -1, the routine calculates optimal size ofTfor the optimum performance and returns this value inT(1). IfTSIZE = -2, the routine calculates minimal size ofTand returns this value inT(1).WORKβ (workspace)COMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)contains optimal (or either minimal or optimal, if query was assumed)LWORK. SeeLWORKfor details.LWORKβINTEGER. It's the dimension of the arrayWORK, and the rule isLWORK >= 1. IfLWORK = -1or-2, then a workspace query is assumed. The routine only calculates the sizes of theTandWORKarrays, returns these values as the first entries of theTandWORKarrays, and no error message related toTorWORKis issued byXERBLA. IfLWORK = -1, the routine calculates optimal size ofWORKfor the optimal performance and returns this value inWORK(1). IfLWORK = -2, the routine calculates minimal size ofWORKand returns this value inWORK(1). πINFOβINTEGER, and here's the vibe check:= 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.
Further Details
The whole point of this interface is to give developers maximum freedom to create any QR factorization algorithm they want. The triangular (trapezoidal) R has to be stored in the upper part of A. The lower part of A and the array T can be used to store any relevant information for applying or constructing the Q factor. The WORK array can safely be discarded after exit. β¨
Caution, bestie: one should not expect the sizes ofTandWORKto be the same from one LAPACK implementation to the other, or even from one execution to the other. A workspace query (forTandWORK) is needed at each execution. However, for a given execution, the size ofTandWORKare fixed and will not change from one query to the next. π«Ά
Further Details particular to this LAPACK implementation:
These details are particular for this LAPACK implementation. Users should not take them for granted. These details may change in the future, and are not likely true for another LAPACK implementation. These details are relevant if one wants to try to understand the code. They are not part of the interface. π
In this version,
T(2): row block size (MB)
T(3): column block size (NB)
T(6:TSIZE): data structure needed for Q, computed by
ZLATSQR or ZGEQRT
Depending on the matrix dimensions M and N, and row and column block sizes MB and NB returned by ILAENV, ZGEQR will use either ZLATSQR (if the matrix is tall-and-skinny) or ZGEQRT to compute the QR factorization. πΈ
Definition at line 174 of file zgeqr.f.
Author
Generated automatically by Doxygen for LAPACK from the source code.
Cute sign-off: this iconic page is source/version LAPACK Version 3.12.0, page geqr(3) β and the footer didn't hand me a date, so I'm not inventing one, periodt ππ
π¦ 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