SRC/dlamtsqr.f(3)
๐ NAME ๐
SRC/dlamtsqr.f โ hey bestie, this page is from the Library Functions Manual and it's literally the DLAMTSQR routine. Main character energy for blocked QR, no cap. ๐
๐ธ SYNOPSIS ๐ธ
๐ฆ Functions/Subroutines ๐ฆ
subroutine dlamtsqr (side, trans, m, n, k, mb, nb, a, lda, t, ldt, c,
ldc, work, lwork, info)
DLAMTSQR โ periodt. โจ
โจ Function/Subroutine Documentation โจ
๐งฎ subroutine dlamtsqr (...) โ DLAMTSQR
okay so here's the full signature, copied exactly because we do not play with details:
subroutine dlamtsqr (character side, character trans, integer m, integer n,
integer k, integer mb, integer nb, double precision, dimension( lda, * )
a, integer lda, double precision, dimension( ldt, * ) t, integer ldt,
double precision, dimension( ldc, * ) c, integer ldc, double precision,
dimension( * ) work, integer lwork, integer info)
DLAMTSQR โ that's the name, bestie. ๐ซถ
๐ Purpose ๐
Lowkey the whole plot: DLAMTSQR overwrites the general real M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**T * C C * Q**T
where Q is a real orthogonal matrix defined as the product of blocked elementary reflectors computed by tall skinny QR factorization (DLATSQR). It's giving factorization but make it blocked. ๐
๐ Parameters ๐
SIDEโCHARACTER*1.= 'L': applyQorQ**Tfrom the Left;= 'R': applyQorQ**Tfrom the Right. ๐TRANSโCHARACTER*1.= 'N': No transpose, applyQ;= 'T': Transpose, applyQ**T.MโINTEGER. The number of rows of the matrixA.M >=0.NโINTEGER. The number of columns of the matrixC.N >= 0.KโINTEGER. The number of elementary reflectors whose product defines the matrixQ.M >= K >= 0;MBโINTEGER. The block size to be used in the blocked QR.MB > N.(must be the same asDLATSQR)NBโINTEGER. The column block size to be used in the blocked QR.N >= NB >= 1.AโDOUBLE PRECISION array, dimension (LDA,K). Thei-th column must contain the vector which defines the blockedelementary reflectorH(i), fori = 1,2,...,k, as returned byDLATSQRin the firstkcolumns of its array argumentA.LDAโINTEGER. The leading dimension of the arrayA. IfSIDE = 'L',LDA >= max(1,M); ifSIDE = 'R',LDA >= max(1,N).TโDOUBLE PRECISION array, dimension ( N * Number of blocks(CEIL(M-K/MB-K)),The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.LDTโINTEGER. The leading dimension of the arrayT.LDT >= NB.CโDOUBLE PRECISION array, dimension (LDC,N). On entry, theM-by-NmatrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q.LDCโINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKโ(workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the minimalLWORK. โจLWORKโINTEGER. The dimension of the arrayWORK. IfMIN(M,N,K) = 0,LWORK >= 1. IfSIDE = 'L',LWORK >= max(1,N*NB). IfSIDE = 'R',LWORK >= max(1,MB*NB). IfLWORK = -1, then a workspace query is assumed; the routine only calculates the minimal 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.
๐ฅ 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 199 of file dlamtsqr.f.
๐ Author ๐
Generated automatically by Doxygen for LAPACK from the source code.
xoxo, bestie ๐ โ Doxygen made this for LAPACK from the source code, and the footer screams LAPACK Version 3.12.0 + SRC/dlamtsqr.f(3). No extra date listed, 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