/home/abui.../sgelqt3.f(3)
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgelqt3.f β bestie, that's the whole name, it's literally the source file path and honestly? iconic of LAPACK to name things like that. This is the man page for SGELQT3, a recursive Fortran subroutine that lives in that file, and it comes to you courtesy of the LAPACK Library Functions Manual. π
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines πΈ
recursive subroutine SGELQT3 (m, n, a, lda, t, ldt, info)β say hi toSGELQT3π that's the whole vibe, that's the subroutine.
π¦ Function/Subroutine Documentation π¦
π recursive subroutine SGELQT3 (integer m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( ldt, * ) t, integer ldt, integer info) π
Yes bestie, it's SGELQT3 again, now with the full glow-up: every argument typed out, m and n and lda and ldt and info as integer, a as real, dimension( lda, * ), t as real, dimension( ldt, * ). Recursive AND typed. She's got range. π
π Purpose:
!>
!> SGELQT3 recursively computes a LQ factorization of a real M-by-N
!> matrix A, using the compact WY representation of Q.
!>
!> Based on the algorithm of Elmroth and Gustavson,
!> IBM J. Res. Develop. Vol 44 No. 4 July 2000.
!>
So like β she recursively computes an LQ factorization of a real M-by-N matrix A, and she does it using the compact WY representation of Q. No cap. And she's not just vibing on her own invention either, she's based on the algorithm of Elmroth and Gustavson, from IBM J. Res. Develop. Vol 44 No. 4 July 2000. Respect the lineage. π
π Parameters π
M
!> M is INTEGER
!> The number of rows of the matrix A. M =< N.
!>
M is INTEGER, it's how many rows the matrix A has, and the constraint is M =< N β not "less than or equal to", literally written =< in the source, we keep it exactly as she is. π
N
!> N is INTEGER
!> The number of columns of the matrix A. N >= 0.
!>
N is INTEGER, the number of columns of the matrix A, and N >= 0 β zero is fine, negative is not, we don't do that here. β¨
A
!> A is REAL array, dimension (LDA,N)
!> On entry, the real M-by-N matrix A. On exit, the elements on and
!> below the diagonal contain the N-by-N lower triangular matrix L; the
!> elements above the diagonal are the rows of V. See below for
!> further details.
!>
A is a REAL array of dimension (LDA,N). On entry she's just your real M-by-N matrix A β innocent. On exit it's a whole transformation: the elements on and below the diagonal hold the N-by-N lower triangular matrix L, and the elements above the diagonal are the rows of V. See below for further details, bestie, don't panic. π
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
!>
LDA is INTEGER, the leading dimension of the array A, and the rule is LDA >= max(1,M). Respect the leading dimension or get wrecked. π«Ά
T
!> T is REAL array, dimension (LDT,N)
!> The N-by-N upper triangular factor of the block reflector.
!> The elements on and above the diagonal contain the block
!> reflector T; the elements below the diagonal are not used.
!> See below for further details.
!>
T is a REAL array of dimension (LDT,N), and she's the N-by-N upper triangular factor of the block reflector. Elements on and above the diagonal contain the block reflector T; the elements below the diagonal are literally not used β they're just there, existing, unused, main character energy of a different kind honestly. π See below for further details!
LDT
!> LDT is INTEGER
!> The leading dimension of the array T. LDT >= max(1,N).
!>
LDT is INTEGER, the leading dimension of the array T, and the requirement is LDT >= max(1,N). Same energy, different array. π
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
INFO is INTEGER and it's your little report card: = 0 means successful exit, we ate and left no crumbs π; < 0 means if INFO = -i, the i-th argument had an illegal value β so go count your arguments and fix the one it's pointing at. π₯
π 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 row
!> above the diagonal. For example, if M=5 and N=3, the matrix V is
!>
!> V = ( 1 v1 v1 v1 v1 )
!> ( 1 v2 v2 v2 )
!> ( 1 v3 v3 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. The
!> block reflector H is then given by
!>
!> H = I - V * T * V**T
!>
!> where V**T is the transpose of V.
!>
!> For details of the algorithm, see Elmroth and Gustavson (cited above).
!>
Okay so here's the tea β β the matrix V stores the elementary reflectors H(i) in the i-th row above the diagonal. For example, if M=5 and N=3, the matrix V looks exactly like that gorgeous little diagram above (yes, we kept every v1, v2, v3 and every blank space exactly where it was, bestie, we do not touch the code block). The vi's represent the vectors which define H(i), and those are returned in the matrix A. The 1's along the diagonal of V are not stored in A β they're implied, they're mysterious, they're doing a little off-screen cameo. π
Then the block reflector H is given by
H = I - V * T * V**T
where V**T is the transpose of V. Obsessed. π¦
For details of the algorithm, see Elmroth and Gustavson (cited above) β go read the paper, iykyk. π
Definition at line 115 of file sgelqt3.f. β
π Author π
Generated automatically by Doxygen for LAPACK from the source code. Not a human, just a little robot doing her best, and honestly? She slayed. π§
LAPACK β Version 3.12.0 β /home/abui.../sgelqt3.f(3)
and that's the whole page, bestie, mwah π go compute an LQ factorization, 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