latsqr(3)
π latsqr β the tall-skinny QR factor bestie π
okay so bestie, welcome to latsqr(3) from the Library Functions Manual β this is where the tall-skinny QR factorization lives, and honestly? it's giving main character energy in the world of blocked QR. π
β¨ NAME β¨
latsqr β latsqr: tall-skinny QR factor. that's the whole vibe. short name, big job. π¦
πΈ SYNOPSIS πΈ
π«Ά Functions
okay so there's not one but FOUR of these bad boys, one per flavour of precision and complexity. pick your fighter:
subroutine clatsqr (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)β theCLATSQRone π (complex, single precision)subroutine dlatsqr (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)β theDLATSQRone π₯ (double precision, real)subroutine slatsqr (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)β theSLATSQRone β (single precision, real)subroutine zlatsqr (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)β theZLATSQRone π (complex, double precision)
same argument list for all four, only the types change. iconic behaviour honestly. β¨
π¦ Detailed Description π¦
this page is literally the function documentation for the whole latsqr family β the blocked tall-skinny QR routines. everything below is organised per-routine, so scroll to the flavour you need. (iykyk π)
π Function Documentation π
π subroutine clatsqr
subroutine clatsqr (integer m, integer n, integer mb, integer nb, complex,
dimension( lda, * ) a, integer lda, complex, dimension( ldt, * ) t,
integer ldt, complex, dimension( * ) work, integer lwork, integer info)
CLATSQR β the complex single-precision one. π
πΈ Purpose
no cap, CLATSQR computes a blocked Tall-Skinny QR factorization of a complex M-by-N matrix A for M >= N:
A = Q * ( R ),
( 0 )
where:
- Q is a M-by-M orthogonal matrix, stored on exit in an implicit form in the elements below the diagonal of the array A and in the elements of the array T;
- R is an upper-triangular N-by-N matrix, stored on exit in the elements on and above the diagonal of the array A;
- 0 is a (M-N)-by-N zero matrix, and is not stored. (we don't store zeros around here, that's so much unnecessary data π)
β¨ Parameters
MβMis INTEGER. The number of rows of the matrix A.M >= 0. π₯NβNis INTEGER. The number of columns of the matrix A.M >= N >= 0.MBβMBis INTEGER. The row block size to be used in the blocked QR.MB > N. π (yes, note that it'sMB > Nhere, notMB > 0β the complex version is built different fr fr)NBβNBis INTEGER. The column block size to be used in the blocked QR.N >= NB >= 1.AβAis 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 the N-by-N upper triangular matrix R; the elements below the diagonal represent Q by the columns of blocked V (see Further Details below). π«ΆLDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).TβTis COMPLEX array, dimension(LDT, N * Number_of_row_blocks)whereNumber_of_row_blocks = CEIL((M-N)/(MB-N)). The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See Further Details below. πLDTβLDTis INTEGER. The leading dimension of the array T.LDT >= NB.WORKβ (workspace) COMPLEX array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the minimalLWORK. βLWORKβLWORKis INTEGER. The dimension of the array WORK.LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= NB*N, otherwise.
if LWORK = -1, then a workspace query is assumed; the routine only calculates the minimal 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. (the classic "just tell me how much room I need" move π)
INFOβINFOis 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
bestie, this is the good part. π«Ά
Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations, representing Q as a product of other orthogonal matrices
Q = Q(1) * Q(2) * . . . * Q(k)
where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
Q(1) zeros out the subdiagonal entries of rows 1:MB of A
Q(2) zeros out the bottom MB-N rows of rows [1:N,MB+1:2*MB-N] of A
Q(3) zeros out the bottom MB-N rows of rows [1:N,2*MB-N+1:3*MB-2*N] of A
. . .
Q(1) is computed by GEQRT, which represents Q(1) by Householder vectors stored under the diagonal of rows 1:MB of A, and by upper triangular block reflectors, stored in array T(1:LDT,1:N). For more information see Further Details in GEQRT. β¨
Q(i) for i>1 is computed by TPQRT, which represents Q(i) by Householder vectors stored in rows [(i-1)*(MB-N)+N+1:i*(MB-N)+N] of A, and by upper triangular block reflectors, stored in array T(1:LDT,(i-1)*N+1:i*N). The last Q(k) may use fewer rows. For more information see Further Details in TPQRT. π
For more details of the overall algorithm, see the description of Sequential TSQR in Section 2.2 of [1].
[1] βCommunication-Optimal Parallel and Sequential QR and LU Factorizations,β J. Demmel, L. Grigori, M. Hoemmen, J. Langou, SIAM J. Sci. Comput, vol. 34, no. 1, 2012
Definition at line 170 of file clatsqr.f.
π subroutine dlatsqr
subroutine dlatsqr (integer m, integer n, integer mb, integer nb, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldt, * ) t, integer ldt, double precision, dimension( * )
work, integer lwork, integer info)
DLATSQR β the double-precision real one. π₯
πΈ Purpose
DLATSQR computes a blocked Tall-Skinny QR factorization of a real M-by-N matrix A for M >= N:
A = Q * ( R ),
( 0 )
where:
- Q is a M-by-M orthogonal matrix, stored on exit in an implicit form in the elements below the diagonal of the array A and in the elements of the array T;
- R is an upper-triangular N-by-N matrix, stored on exit in the elements on and above the diagonal of the array A;
- 0 is a (M-N)-by-N zero matrix, and is not stored.
β¨ Parameters
MβMis INTEGER. The number of rows of the matrix A.M >= 0.NβNis INTEGER. The number of columns of the matrix A.M >= N >= 0.MBβMBis INTEGER. The row block size to be used in the blocked QR.MB > 0. π (and yes, this one saysMB > 0β don't mix it up withCLATSQR'sMB > N, I'm warning you gently π«Ά)NBβNBis INTEGER. The column block size to be used in the blocked QR.N >= NB >= 1.AβAis 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 the N-by-N upper triangular matrix R; the elements below the diagonal represent Q by the columns of blocked V (see Further Details below). π¦LDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).TβTis DOUBLE PRECISION array, dimension(LDT, N * Number_of_row_blocks)whereNumber_of_row_blocks = CEIL((M-N)/(MB-N)). The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See Further Details below. πLDTβLDTis INTEGER. The leading dimension of the array T.LDT >= NB.WORKβ (workspace) DOUBLE PRECISION array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the minimalLWORK. βLWORKβLWORKis INTEGER. The dimension of the array WORK.LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= NB*N, otherwise.
if LWORK = -1, then a workspace query is assumed; the routine only calculates the minimal 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βINFOis 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
Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations, representing Q as a product of other orthogonal matrices
Q = Q(1) * Q(2) * . . . * Q(k)
where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
Q(1) zeros out the subdiagonal entries of rows 1:MB of A
Q(2) zeros out the bottom MB-N rows of rows [1:N,MB+1:2*MB-N] of A
Q(3) zeros out the bottom MB-N rows of rows [1:N,2*MB-N+1:3*MB-2*N] of A
. . .
Q(1) is computed by GEQRT, which represents Q(1) by Householder vectors stored under the diagonal of rows 1:MB of A, and by upper triangular block reflectors, stored in array T(1:LDT,1:N). For more information see Further Details in GEQRT. β¨
Q(i) for i>1 is computed by TPQRT, which represents Q(i) by Householder vectors stored in rows [(i-1)*(MB-N)+N+1:i*(MB-N)+N] of A, and by upper triangular block reflectors, stored in array T(1:LDT,(i-1)*N+1:i*N). The last Q(k) may use fewer rows. For more information see Further Details in TPQRT. π
For more details of the overall algorithm, see the description of Sequential TSQR in Section 2.2 of [1].
[1] βCommunication-Optimal Parallel and Sequential QR and LU Factorizations,β J. Demmel, L. Grigori, M. Hoemmen, J. Langou, SIAM J. Sci. Comput, vol. 34, no. 1, 2012
Definition at line 170 of file dlatsqr.f.
okay that's the chunky part handled π
slatsqr and zlatsqr are up next β don't go anywhere bestie π«Ά
π¦ subroutine slatsqr π¦
subroutine slatsqr (integer m, integer n, integer mb, integer nb, real,
dimension( lda, * ) a, integer lda, real, dimension( ldt, * ) t, integer
ldt, real, dimension( * ) work, integer lwork, integer info)
SLATSQR β bestie, this is the single-precision icon π
β¨ Purpose β¨
Okay so SLATSQR computes a blocked Tall-Skinny QR factorization of a real M-by-N matrix A for M >= N, and the way it does it is genuinely iconic:
A = Q * ( R ),
( 0 )
where, fr fr:
Qis aM-by-Morthogonal matrix, stored on exit in an implicit form in the elements below the diagonal of the arrayAand in the elements of the arrayT;Ris an upper-triangularN-by-Nmatrix, stored on exit in the elements on and above the diagonal of the arrayA;0is a(M-N)-by-Nzero matrix, and is not stored.
No cap, that zero block is just not invited to the storage party π
π 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. M >= N >= 0.
MB
MB is INTEGER The row block size to be used in the blocked QR. MB > N.
NB
NB is INTEGER The column block size to be used in the blocked QR. 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 the N-by-N upper triangular matrix R; the elements below the diagonal represent Q by the columns of blocked V (see Further Details).
LDA
LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M).
T
T is REAL array, dimension (LDT, N * Number_of_row_blocks) where Number_of_row_blocks = CEIL((M-N)/(MB-N)) The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See Further Details below.
LDT
LDT is INTEGER The leading dimension of the array T. LDT >= NB.
WORK
(workspace) REAL array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1) returns the minimal LWORK.
LWORK
LWORK is INTEGER The dimension of the array WORK. LWORK >= 1, if MIN(M,N) = 0, and LWORK >= NB*N, otherwise.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the minimal 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
INFO is INTEGER = 0: successful exit < 0: if INFO = -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 π«
Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations, representing Q as a product of other orthogonal matrices
Q = Q(1) * Q(2) * . . . * Q(k)
where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
Q(1) zeros out the subdiagonal entries of rows 1:MB of A
Q(2) zeros out the bottom MB-N rows of rows [1:N,MB+1:2*MB-N] of A
Q(3) zeros out the bottom MB-N rows of rows [1:N,2*MB-N+1:3*MB-2*N] of A
. . .
Q(1) is computed by GEQRT, which represents Q(1) by Householder vectors stored under the diagonal of rows 1:MB of A, and by upper triangular block reflectors, stored in array T(1:LDT,1:N). For more information see Further Details in GEQRT.
Q(i) for i>1 is computed by TPQRT, which represents Q(i) by Householder vectors stored in rows [(i-1)*(MB-N)+N+1:i*(MB-N)+N] of A, and by upper triangular block reflectors, stored in array T(1:LDT,(i-1)*N+1:i*N). The last Q(k) may use fewer rows. For more information see Further Details in TPQRT.
For more details of the overall algorithm, see the description of Sequential TSQR in Section 2.2 of [1].
[1] βCommunication-Optimal Parallel and Sequential QR and LU Factorizations,β J. Demmel, L. Grigori, M. Hoemmen, J. Langou, SIAM J. Sci. Comput, vol. 34, no. 1, 2012
Definition at line 170 of file slatsqr.f.
π¦ subroutine zlatsqr π¦
subroutine zlatsqr (integer m, integer n, integer mb, integer nb,
complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension(
ldt, * ) t, integer ldt, complex*16, dimension( * ) work, integer lwork,
integer info)
ZLATSQR β and here's the complex*16 version, serving the same legendary energy β¨
β¨ Purpose β¨
ZLATSQR computes a blocked Tall-Skinny QR factorization of a complex M-by-N matrix A for M >= N:
A = Q * ( R ),
( 0 )
where:
Qis aM-by-Morthogonal matrix, stored on exit in an implicit form in the elements below the diagonal of the arrayAand in the elements of the arrayT;Ris an upper-triangularN-by-Nmatrix, stored on exit in the elements on and above the diagonal of the arrayA;0is a(M-N)-by-Nzero matrix, and is not stored.
Same iconic decomposition, just with COMPLEX*16 sparkle π«Ά
π 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. M >= N >= 0.
MB
MB is INTEGER The row block size to be used in the blocked QR. MB > N.
NB
NB is INTEGER The column block size to be used in the blocked QR. N >= NB >= 1.
A
A is COMPLEX*16 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 the N-by-N upper triangular matrix R; the elements below the diagonal represent Q by the columns of blocked V (see Further Details).
LDA
LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M).
T
T is COMPLEX*16 array, dimension (LDT, N * Number_of_row_blocks) where Number_of_row_blocks = CEIL((M-N)/(MB-N)) The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See Further Details below.
LDT
LDT is INTEGER The leading dimension of the array T. LDT >= NB.
WORK
(workspace) COMPLEX*16 array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1) returns the minimal LWORK.
LWORK
LWORK is INTEGER The dimension of the array WORK. LWORK >= 1, if MIN(M,N) = 0, and LWORK >= NB*N, otherwise.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the minimal 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
INFO is INTEGER = 0: successful exit < 0: if INFO = -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 π«
Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations, representing Q as a product of other orthogonal matrices
Q = Q(1) * Q(2) * . . . * Q(k)
where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
Q(1) zeros out the subdiagonal entries of rows 1:MB of A
Q(2) zeros out the bottom MB-N rows of rows [1:N,MB+1:2*MB-N] of A
Q(3) zeros out the bottom MB-N rows of rows [1:N,2*MB-N+1:3*MB-2*N] of A
. . .
Q(1) is computed by GEQRT, which represents Q(1) by Householder vectors stored under the diagonal of rows 1:MB of A, and by upper triangular block reflectors, stored in array T(1:LDT,1:N). For more information see Further Details in GEQRT.
Q(i) for i>1 is computed by TPQRT, which represents Q(i) by Householder vectors stored in rows [(i-1)*(MB-N)+N+1:i*(MB-N)+N] of A, and by upper triangular block reflectors, stored in array T(1:LDT,(i-1)*N+1:i*N). The last Q(k) may use fewer rows. For more information see Further Details in TPQRT.
For more details of the overall algorithm, see the description of Sequential TSQR in Section 2.2 of [1].
[1] βCommunication-Optimal Parallel and Sequential QR and LU Factorizations,β J. Demmel, L. Grigori, M. Hoemmen, J. Langou, SIAM J. Sci. Comput, vol. 34, no. 1, 2012
Definition at line 170 of file zlatsqr.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, that's the wholelatsqr(3)page π This lil masterpiece came from LAPACK Version 3.12.0, and the footer literally sayslatsqr(3)β so you know exactly where to find it again. Slay, and may your QR always be communication-optimal β¨π
π¦ 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