SRC/sgelqf.f(3)
β¨ NAME β¨
SRC/sgelqf.f β bestie, this is the file that computes an LQ factorization of a real M-by-N matrix A. Like, the whole vibe of this page is LQ and it absolutely ate π
πΈ SYNOPSIS πΈ
π«Ά Functions/Subroutines
subroutine sgelqf (m, n, a, lda, tau, work, lwork, info)β SGELQF, the main character herself π
π Function/Subroutine Documentation π
subroutine sgelqf (integer m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tau, real, dimension( * ) work, integer lwork, integer info)
SGELQF
π¦ Purpose
okay so, !> SGELQF computes an LQ factorization of a real M-by-N matrix A:
A = ( L 0 ) * Q
where:
Qis aN-by-Northogonal matrix;Lis a lower-triangularM-by-Mmatrix;0is aM-by-(N-M) zero matrix, ifM < N.
and that's literally it, no cap β¨
π Parameters
M
!> M is INTEGER
!> The number of rows of the matrix A. M >= 0.
N
!> N is INTEGER
!> The number of columns of the matrix A. N >= 0.
A
!> A is REAL array, dimension (LDA,N)
!> On entry, the M-by-N matrix A.
!> On exit, the elements on and below the diagonal of the array
!> contain the m-by-min(m,n) lower trapezoidal matrix L (L is
!> lower triangular if m <= n); the elements above the diagonal,
!> with the array TAU, represent the orthogonal matrix Q as a
!> product of elementary reflectors (see Further Details).
so on entry it's just your cute little matrix A, and on exit the lower part (on + below the diagonal) is holding L β the m-by-min(m,n) lower trapezoidal matrix (lower triangular if m <= n, slay) β while everything above the diagonal teams up with TAU to represent Q as a product of elementary reflectors πͺ
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
TAU
!> TAU is REAL array, dimension (min(M,N))
!> The scalar factors of the elementary reflectors (see Further
!> Details).
WORK
!> WORK is REAL array, dimension (MAX(1,LWORK))
!> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
!> LWORK is INTEGER
!> The dimension of the array WORK.
!> LWORK >= 1, if MIN(M,N) = 0, and LWORK >= M, otherwise.
!> For optimum performance LWORK >= M*NB, where NB is the
!> optimal blocksize.
!>
!> 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.
π¨ bestie, theLWORK = -1thing is a workspace query β the routine only figures out the optimal size ofWORK, hands it back as the first entry of theWORKarray, andXERBLAdoes not yell at you aboutLWORK. iconic behaviour tbh.
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
okay so the tea is: the matrix Q is represented as a product of elementary reflectors β
Q = H(k) . . . H(2) H(1), where k = min(m,n).
Each H(i) has the form:
H(i) = I - tau * v * v**T
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:n) is stored on exit in A(i,i+1:n), and tau in TAU(i). periodt π
π Definition at line 143 of file sgelqf.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole page, bestie π§π this is LAPACK Version 3.12.0, source page SRC/sgelqf.f(3) β go forth and factorize, iykyk π¦β¨
π¦ 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