geqrt(3)
π geqrt(3) β Library Functions Manual π
okay so bestie, this is geqrt(3) from the Library Functions Manual, and it's giving linear algebra main character energy β¨ β blocked QR factorization, four flavors (real, double, complex, complex*16), the whole squad. Let's get into it π«Ά
πΈ NAME πΈ
geqrt β geqrt: QR factor, with T π
β¨ SYNOPSIS β¨
π Functions π
subroutine cgeqrt (m, n, nb, a, lda, t, ldt, work, info)β CGEQRTsubroutine dgeqrt (m, n, nb, a, lda, t, ldt, work, info)β DGEQRTsubroutine sgeqrt (m, n, nb, a, lda, t, ldt, work, info)β SGEQRTsubroutine zgeqrt (m, n, nb, a, lda, t, ldt, work, info)β ZGEQRT
π¦ Detailed Description π¦
This is the landing page for the whole geqrt family β every single variant gets its own full writeup under Function Documentation below, so scroll like your GPA depends on it π
π Function Documentation π
π subroutine cgeqrt
subroutine cgeqrt (integer m, integer n, integer nb, complex, dimension(
lda, * ) a, integer lda, complex, dimension( ldt, * ) t, integer ldt,
complex, dimension( * ) work, integer info)
CGEQRT β the complex one, obviously π
π Purpose π
CGEQRT computes a blocked QR factorization of a complex M-by-N matrix A using the compact WY representation of Q. No cap, that's the whole gig β¨
π Parameters π
MβM is INTEGER. The number of rows of the matrix A.M >= 0(zero rows is legal, bestie, it's just a very sad little matrix π).NβN is INTEGER. The number of columns of the matrix A.N >= 0.NBβNB is INTEGER. The block size to be used in the blocked QR.MIN(M,N) >= NB >= 1. Pick it wisely, it's the vibe check for your blocking π₯AβA is COMPLEX array, dimension (LDA,N). On entry, the M-by-N matrix A. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-N upper trapezoidal matrix R (R is upper triangular ifM >= N); the elements below the diagonal are the columns of V. So it comes in as A and leaves as two whole moods β iconic behaviour πLDAβLDA is INTEGER. The leading dimension of the array A.LDA >= max(1,M).TβT is COMPLEX array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details π§LDTβLDT is INTEGER. The leading dimension of the array T.LDT >= NB.WORKβWORK is COMPLEX array, dimension (NB*N).INFOβINFO is 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.
π Further Details: π
The matrix V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is
V = ( 1 )
( v1 1 )
( v1 v2 1 )
( v1 v2 v3 )
( v1 v2 v3 )
where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A. (Not me storing everything except the ones π)
Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as
T = (T1 T2 ... TB).
Definition at line 140 of file cgeqrt.f.
π subroutine dgeqrt
subroutine dgeqrt (integer m, integer n, integer nb, double precision,
dimension( lda, * ) a, integer lda, double precision, dimension( ldt, *
) t, integer ldt, double precision, dimension( * ) work, integer info)
DGEQRT β double precision, double the drama π₯
π Purpose π
DGEQRT computes a blocked QR factorization of a real M-by-N matrix A using the compact WY representation of Q. Same energy, real numbers β¨
π Parameters π
MβM is INTEGER. The number of rows of the matrix A.M >= 0.NβN is INTEGER. The number of columns of the matrix A.N >= 0.NBβNB is INTEGER. The block size to be used in the blocked QR.MIN(M,N) >= NB >= 1.AβA is DOUBLE PRECISION array, dimension (LDA,N). On entry, the M-by-N matrix A. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-N upper trapezoidal matrix R (R is upper triangular ifM >= N); the elements below the diagonal are the columns of V.LDAβLDA is INTEGER. The leading dimension of the array A.LDA >= max(1,M).TβT is DOUBLE PRECISION array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.LDTβLDT is INTEGER. The leading dimension of the array T.LDT >= NB.WORKβWORK is DOUBLE PRECISION array, dimension (NB*N).INFOβINFO is 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.
π Further Details: π
The matrix V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is
V = ( 1 )
( v1 1 )
( v1 v2 1 )
( v1 v2 v3 )
( v1 v2 v3 )
where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A.
Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as
T = (T1 T2 ... TB).
Definition at line 140 of file dgeqrt.f.
π subroutine sgeqrt
subroutine sgeqrt (integer m, integer n, integer nb, real, dimension( lda, *
) a, integer lda, real, dimension( ldt, * ) t, integer ldt, real,
dimension( * ) work, integer info)
SGEQRT β single precision, single-handedly carrying the real-number agenda π
π Purpose π
SGEQRT computes a blocked QR factorization of a real M-by-N matrix A using the compact WY representation of Q. Periodt π
π Parameters π
MβM is INTEGER. The number of rows of the matrix A.M >= 0.NβN is INTEGER. The number of columns of the matrix A.N >= 0.NBβNB is INTEGER. The block size to be used in the blocked QR.MIN(M,N) >= NB >= 1.AβA is REAL array, dimension (LDA,N). On entry, the M-by-N matrix A. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-N upper trapezoidal matrix R (R is upper triangular ifM >= N); the elements below the diagonal are the columns of V.LDAβLDA is INTEGER. The leading dimension of the array A.LDA >= max(1,M).TβT is REAL array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.LDTβLDT is INTEGER. The leading dimension of the array T.LDT >= NB.WORKβWORK is REAL array, dimension (NB*N).INFOβINFO is 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.
π Further Details: π
The matrix V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is
V = ( 1 )
( v1 1 )
( v1 v2 1 )
( v1 v2 v3 )
( v1 v2 v3 )
where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A.
Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as
T = (T1 T2 ... TB).
Definition at line 140 of file sgeqrt.f.
π subroutine zgeqrt
subroutine zgeqrt (integer m, integer n, integer nb, complex*16, dimension(
lda, * ) a, integer lda, complex*16, dimension( ldt, * ) t, integer ldt,
complex*16, dimension( * ) work, integer info)
ZGEQRT β complex*16, aka the double-precision complex one, the final boss of this squad π
π Purpose π
ZGEQRT computes a blocked QR factorization of a complex M-by-N matrix A using the compact WY representation of Q. Big numbers, big feelings π
π Parameters π
MβM is INTEGER. The number of rows of the matrix A.M >= 0.NβN is INTEGER. The number of columns of the matrix A.N >= 0.NBβNB is INTEGER. The block size to be used in the blocked QR.MIN(M,N) >= NB >= 1.AAβ COMPLEX*16 array, dimension(LDA,N). On entry it's the M-by-N matrix A, and on exit the elements on and above the diagonal hold the min(M,N)-by-N upper trapezoidal matrix R (and R is upper triangular if M >= N), while the elements below the diagonal are the columns of V. So A literally gets a glow-up mid-call, no cap. πLDAβ INTEGER, obviously, and it's the leading dimension of the array A. Rule of the land:LDA >= max(1,M). Respect the bounds bestie, she's picky about this. πTβ COMPLEX*16 array, dimension(LDT,MIN(M,N)). It's holding the upper triangular block reflectors, packed all cute and compact as a sequence of upper triangular blocks. The details are below if you're curious (you should be). β¨LDTβ INTEGER, the leading dimension of the array T. Constraint:LDT >= NB. That's it, that's the rule. π¦WORKβ COMPLEX*16 array, dimension(NB*N). Scratch space, doing her little behind-the-scenes job. πΈINFOβ INTEGER, the vibe check at the end:= 0: successful exit, we ate and left no crumbs π< 0: ifINFO = -i, the i-th argument had an illegal value, aka somebody passed something cursed π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Like, four whole institutions collaborated on this. Group project that actually worked. iconic. π«Ά
π Further Details:
Okay this is the fun part, the lore. π
The matrix V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is:
V = ( 1 )
( v1 1 )
( v1 v2 1 )
( v1 v2 v3 )
( v1 v2 v3 )
where the vi's represent the vectors which define H(i), which are returned in the matrix A. And here's the cute little detail: the 1's along the diagonal of V are not stored in A. They're implied, they're a vibe, they're main character energy that doesn't need to be written down. β¨
Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. So the last one is always the special little guy. π§
For each of the B blocks, an upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as:
T = (T1 T2 ... TB).
Look at her, all lined up in a row. Obsessed. π
Definition at line 140 of file zgeqrt.f.
π¦ Author
Generated automatically by Doxygen for LAPACK from the source code β so like, a robot wrote this part, but a robot with taste ngl.
β¨ and that's the whole page bestie β¨ this lil masterpiece is from LAPACK Version 3.12.0, and the date on the original footer is baked right into that same line β so go forth and factor your block reflectors, fr fr. π slay π
π¦ 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