/home/abui...L/sgeqrf.f(3)
๐ /home/abui...L/sgeqrf.f(3) โ Library Functions Manual ๐
okay bestie so this is a page from the LAPACK manual โ Version 3.12.0 โ and it's lowkey one of the most important routines in the whole factorization-verse. Let's get into it ๐
โจ NAME โจ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/VARIANTS/qr/LL/sgeqrf.f
yeah that's the whole path, that's the name, she's that girl ๐ no short nickname, the path IS the brand. it's giving "main character energy" in a build directory.
๐ธ SYNOPSIS ๐ธ
Functions/Subroutines
subroutine SGEQRF (m, n, a, lda, tau, work, lwork, info)
SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm. โ periodt. this is the left-looking, Level 3 BLAS variant, not the regular one. iykyk ๐ฅ
๐ฆ Function/Subroutine Documentation ๐ฆ
subroutine SGEQRF (integer m, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) tau, real, dimension( * ) work,
integer lwork, integer info)
SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
๐ Purpose ๐
okay so here's the vibe: SGEQRF computes a QR factorization of a real M-by-N matrix A: and the whole glow-up is
A = Q * R.
and like โ this is the left-looking Level 3 BLAS version of the algorithm. ๐ซถ that's literally the whole point, she does the QR thing but left-looking, and she does it with Level 3 BLAS, slay.
๐ Parameters ๐
MโM is INTEGER. the number of rows of the matrixA. requirement:M >= 0. no negative rows allowed bestie, we don't do that here โจNโN is INTEGER. the number of columns of the matrixA. requirement:N >= 0. same energy,N >= 0or nothing ๐AโA is REAL array, dimension (LDA,N). on entry: it's theM-by-NmatrixA. on exit: the elements on and above the diagonal of the array contain themin(M,N)-by-Nupper trapezoidal matrixR(and yes,Ris upper triangular ifm >= n); the elements below the diagonal, together with the arrayTAU, represent the orthogonal matrixQas a product ofmin(m,n)elementary reflectors (see Further Details ๐). she transforms, she doesn't disappear ๐LDAโLDA is INTEGER. the leading dimension of the arrayA. requirement:LDA >= max(1,M). respect the stride, always ๐TAUโTAU is REAL array, dimension (min(M,N)). the scalar factors of the elementary reflectors (again โ see Further Details, it's all there). these lil scalars are the whole personality ofQngl ๐WORKโWORK is REAL array, dimension (MAX(1,LWORK)). on exit: ifINFO = 0, thenWORK(1)returns the optimalLWORK. love a workspace that reports back ๐ซถLWORKโLWORK is INTEGER.
it's the dimension of the array WORK. the rules: LWORK >= 1 if MIN(M,N) = 0, otherwise the dimension can be divided into three parts. THREE parts. not two. not four. three. ๐ฅ
- โจ the part for the triangular factor
T. if the very lastTis not bigger than any of the rest, then this part isNB x ceiling(K/NB), otherwise,NB x (K-NT), whereK = min(M,N)andNTis the dimension of the very lastT - โจ the part for the very last
TwhenTis bigger than any of the restT. the size of this part isNT x NT, whereNT = K - ceiling ((K-NX)/NB) x NB, whereK = min(M,N), andNXis calculated by:
NX = MAX( 0, ILAENV( 3, 'SGEQRF', ' ', M, N, -1, -1 ) )
- โจ the part for
dlarfbโ size ismax((N-M)*K, (N-M)*NB, K*NB, NB*NB)
so, and this is the moment, LWORK = part1 + part2 + part3 ๐งฎ ate.
ifLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. so don't come for her aboutLWORKwhen you asked for the query. she said what she said ๐
INFOโINFO is INTEGER. the receipts:= 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.
the whole squad, the founding mothers and fathers of this factorization fr fr ๐
๐ Date ๐
December 2016
(iconic, vintage, still serving ๐ )
๐ง Further Details ๐ง
so the matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(k), where k = min(m,n).
and each H(i) has the form:
H(i) = I - tau * v * v'
where tau is a real scalar, and v is a real vector with v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), and tau in TAU(i). ๐ฆ look at her. structured. iconic. no cap.
โญ Definition at line 151 of file sgeqrf.f. โญ
๐ซ Sign-off ๐ซ
this page was Generated automatically by Doxygen for LAPACK from the source code โ so like, a robot wrote it, but i'm here to make it cute ๐
LAPACK โ Version 3.12.0 ๐
okay bye bestie, go factor some QR, drink water, and remember: LWORK = part1 + part2 + part3 ๐๐
๐ฆ 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