CLAMSWLQ(3)
๐ CLAMSWLQ(3) โ Library Functions Manual โจ
Bestie, welcome to the CLAMSWLQ page ๐. The manual name is Library Functions Manual, and the header source path is /home/abui.../clamswlq.f(3). This is the LAPACK girliesโ short-wide-LQ era, and weโre reading every single detail. No skimming, no cap. ๐
๐ NAME
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/clamswlq.f
๐ธ SYNOPSIS
๐ง Functions/Subroutines
subroutine CLAMSWLQ (side, trans, m, n, k, mb, nb, a, lda, t, ldt, c,
ldc, work, lwork, info)
CLAMSWLQ
๐ชฉ Function/Subroutine Documentation
subroutine CLAMSWLQ (character side, character trans, integer m, integer n,
integer k, integer mb, integer nb, complex, dimension( lda, * ) a,
integer lda, complex, dimension( ldt, * ) t, integer ldt, complex,
dimension(ldc, * ) c, integer ldc, complex, dimension( * ) work, integer
lwork, integer info)
CLAMSWLQ
๐ฏ Purpose
CLAMSWLQ overwrites the general complex M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**H * C C * Q**H
where Q is a complex unitary matrix defined as the product of blocked elementary reflectors computed by short wide LQ factorization (CLASWLQ).
Tiny heads-up, bestie: the table literally saysTRANS = 'T'for the conjugate-transpose row, while the parameter list below says'C'โ both are exactly what this page contains, so donโt come for me ๐ .
๐งธ Parameters
SIDE
SIDE is CHARACTER*1
= 'L': apply Q or Q**H from the Left;= 'R': apply Q or Q**H from the Right.
TRANS
TRANS is CHARACTER*1
= 'N': No transpose, apply Q;= 'C': Conjugate transpose, apply Q**H.
M
M is INTEGER
The number of rows of the matrix C. M >=0.
N
N is INTEGER
The number of columns of the matrix C. N >= 0.
K
K is INTEGER
The number of elementary reflectors whose product defines the matrix Q. M >= K >= 0;
MB
MB is INTEGER
The row block size to be used in the blocked LQ. M >= MB >= 1
NB
NB is INTEGER
The column block size to be used in the blocked LQ. NB > M.
A
A is COMPLEX array, dimension
(LDA,M) if SIDE = 'L',
(LDA,N) if SIDE = 'R'
The i-th row must contain the vector which defines the blocked elementary reflector H(i), for i = 1,2,...,k, as returned by CLASWLQ in the first k rows of its array argument A.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA => max(1,K).
T
T is COMPLEX array, dimension
( M * Number of blocks(CEIL(N-K/NB-K)),
The blocked 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 >= MB.
C
C is COMPLEX array, dimension (LDC,N)
On entry, the M-by-N matrix C. On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
LDC
LDC is INTEGER
The leading dimension of the array C. LDC >= max(1,M).
WORK
WORK is (workspace) COMPLEX array, dimension (MAX(1,LWORK))
LWORK
LWORK is INTEGER
The dimension of the array WORK.
If SIDE = 'L', LWORK >= max(1,NB) * MB;
if SIDE = 'R', LWORK >= max(1,M) * MB.
If LWORK = -1, then a workspace query is assumed; the routine
only calculates the optimal 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
Short-Wide LQ (SWLQ) performs LQ by a sequence of unitary transformations, representing Q as a product of other unitary matrices:
Q = Q(1) * Q(2) * . . . * Q(k)
where each Q(i) zeros out upper diagonal entries of a block of NB rows of A:
Q(1)zeros out the upper diagonal entries of rows1:NBof AQ(2)zeros out the bottomMB-Nrows of rows[1:M,NB+1:2*NB-M]of AQ(3)zeros out the bottomMB-Nrows of rows[1:M,2*NB-M+1:3*NB-2*M]of A. . .
Q(1) is computed by GELQT, 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 GELQT.
Q(i) for i>1 is computed by TPLQT, which represents Q(i) by Householder vectors stored in columns [(i-1)*(NB-M)+M+1:i*(NB-M)+M] of A, and by upper triangular block reflectors, stored in array T(1:LDT,(i-1)*M+1:i*M). The last Q(k) may use fewer rows. For more information see Further Details in TPLQT.
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 195 of file clamswlq.f.
โจ Author (Doxygenโs version)
Generated automatically by Doxygen for LAPACK from the source code.
๐ Thatโs the whole page, bestie. LAPACK Version 3.12.0, from /home/abui.../clamswlq.f(3). Periodt. ๐
๐ฆ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms