/home/abui.../sgemlqt.f(3)
π /home/abui.../sgemlqt.f(3) β Library Functions Manual
okay so bestie, you found the manpage for /home/abui.../sgemlqt.f(3) and we are gonna get you fluent in it. no cap. β¨
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgemlqt.f
like, that's literally the whole file path. the source. the origin story. the main character's birth certificate π
π¦ SYNOPSIS π¦
Functions/Subroutines β this is where the actual β¨contentβ¨ lives:
subroutine SGEMLQT (side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc,
work, info)
SGEMLQT β that's her name, say it with your chest π
π Function/Subroutine Documentation π
subroutine SGEMLQT (character side, character trans, integer m, integer n,
integer k, integer mb, real, dimension( ldv, * ) v, integer ldv, real,
dimension( ldt, * ) t, integer ldt, real, dimension( ldc, * ) c, integer
ldc, real, dimension( * ) work, integer info)
SGEMLQT β she's back and this time with the full type signature. types on types on types π
β Purpose β
ok so (and this is the whole vibe, no notes):
!>
!> DGEMLQT 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 K
!> elementary reflectors:
!>
!> Q = H(1) H(2) . . . H(K) = I - V T V**T
!>
!> generated using the compact WY representation as returned by SGELQT.
!>
!> Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'.
!>
yes bestie, the docs up top say DGEMLQT even though the routine is SGEMLQT β we do not ask questions, we simply notice it and move on π (keeping it exactly as written, that's the rule).
so basically: you hand her a matrix C, she slaps Q (or Q**T) on the left or right depending on your choices, and Q itself is a product of K elementary reflectors built with the compact WY representation, courtesy of SGELQT. iconic behavior, honestly π₯
π Parameters π
SIDE
!> SIDE is CHARACTER*1
!> = 'L': apply Q or Q**T from the Left;
!> = 'R': apply Q or Q**T from the Right.
!>
left or right, pick your fighter. it's giving "which side of the bed do you wake up on" π
TRANS
!> TRANS is CHARACTER*1
!> = 'N': No transpose, apply Q;
!> = 'C': Transpose, apply Q**T.
!>
'N' = no transpose, apply Q. 'C' = transpose, apply Q**T. the 'C' is doing so much work here, ngl π«Ά
M
!> M is INTEGER
!> The number of rows of the matrix C. M >= 0.
!>
rows of C. must be M >= 0. respect the zero-inclusive bound π
N
!> N is INTEGER
!> The number of columns of the matrix C. N >= 0.
!>
columns of C. N >= 0. same energy. β
K
!> K is INTEGER
!> The number of elementary reflectors whose product defines
!> the matrix Q.
!> If SIDE = 'L', M >= K >= 0;
!> if SIDE = 'R', N >= K >= 0.
!>
how many elementary reflectors are getting multiplied together to make Q. and pay attention to the bounds, bestie:
SIDE = 'L'βM >= K >= 0SIDE = 'R'βN >= K >= 0
MB
!> MB is INTEGER
!> The block size used for the storage of T. K >= MB >= 1.
!> This must be the same value of MB used to generate T
!> in SGELQT.
!>
block size for storing T. the range is K >= MB >= 1 (not zero, one β she has standards π
). and it must be the exact same MB you used to generate T in SGELQT. mismatch it and you're on your own, fr fr.
V
!> V is REAL array, dimension
!> (LDV,M) if SIDE = 'L',
!> (LDV,N) if SIDE = 'R'
!> The i-th row must contain the vector which defines the
!> elementary reflector H(i), for i = 1,2,...,k, as returned by
!> SGELQT in the first K rows of its array argument A.
!>
dimension is (LDV,M) if SIDE = 'L' and (LDV,N) if SIDE = 'R'. the i-th row holds the vector defining H(i), for i = 1,2,...,k, exactly as SGELQT handed it to you in the first K rows of its argument A. handoff queen π€
LDV
!> LDV is INTEGER
!> The leading dimension of the array V. LDV >= max(1,K).
!>
leading dimension of V. LDV >= max(1,K). write it down, love it, live by it.
T
!> T is REAL array, dimension (LDT,K)
!> The upper triangular factors of the block reflectors
!> as returned by SGELQT, stored as a MB-by-K matrix.
!>
dimension (LDT,K). the upper triangular factors of the block reflectors, straight from SGELQT, stored as an MB-by-K matrix. triangular and thriving πΊ
LDT
!> LDT is INTEGER
!> The leading dimension of the array T. LDT >= MB.
!>
leading dimension of T. LDT >= MB. short and slay π
C
!> C is REAL array, dimension (LDC,N)
!> On entry, the M-by-N matrix C.
!> On exit, C is overwritten by Q C, Q**T C, C Q**T or C Q.
!>
dimension (LDC,N). on entry: your precious M-by-N matrix C. on exit: overwritten by Q C, Q**T C, C Q**T or C Q. she does not preserve. she transforms π make sure that's what you wanted!
LDC
!> LDC is INTEGER
!> The leading dimension of the array C. LDC >= max(1,M).
!>
leading dimension of C. LDC >= max(1,M). boundaries are self-care πΈ
WORK
!> WORK is REAL array. The dimension of
!> WORK is N*MB if SIDE = 'L', or M*MB if SIDE = 'R'.
!>
workspace array. size it right: N*MB if SIDE = 'L', or M*MB if SIDE = 'R'. yes, the two spaces after "or" are canon. π§
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
the vibe check π«
= 0: successful exit, we ate.< 0: ifINFO = -i, the i-th argument had an illegal value. somebody passed something cursed andINFOis telling on them.
π«Ά Author π«Ά
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
four whole institutions collaborated on this. group project that actually worked, unlike yours π (jk jk ily)
Definition at line 151 of file sgemlqt.f. β line 151, mark it, screenshot it, put it on your wall π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. so nobody wrote this page by hand, a robot did it, and honestly? she did great. π
and that's the whole thing bestie β every parameter, every bound, every !> marker, untouched. the facts are sacred, the vibe is free. π₯
LAPACK β Version 3.12.0 β and the page itself lives at /home/abui.../sgemlqt.f(3). go forth and multiply your reflectors, you absolute icon πβ¨π
π¦ 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