SRC/cgeqlf.f(3)
β¨ SRC/cgeqlf.f β cgeqlf(3) β¨
okay bestie, this is a page from the LAPACK library manual, and today's main character is cgeqlf π
(yes, a Fortran subroutine, yes we stan)
πΈ NAME πΈ
SRC/cgeqlf.f β literally the source file, that's the name, that's the vibe π«Ά
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine cgeqlf (m, n, a, lda, tau, work, lwork, info)
CGEQLF π₯
π Function/Subroutine Documentation π
subroutine cgeqlf (integer m, integer n, complex, dimension( lda, * ) a,
integer lda, complex, dimension( * ) tau, complex, dimension( * ) work,
integer lwork, integer info)
CGEQLF π
π¦ Purpose π¦
!>!> CGEQLF computes a QL factorization of a complex M-by-N matrix A:!> A = Q * L.!>
ok so it takes your complex matrix A and factors it into Q * L β that's the whole assignment, no cap β¨
π Parameters π
MβMis INTEGER.!>Mis the number of rows of the matrix A.M >= 0.!>Translation: how many rows your matrix has, and it can't be negative bestie πNβNis INTEGER.!>Nis the number of columns of the matrix A.N >= 0.!>Same energy, but columns this time πAβAis COMPLEX array, dimension(LDA,N).!>On entry, the M-by-N matrix A.!>On exit:!>ifm >= n, the lower triangle of the subarrayA(m-n+1:m,1:n)contains the N-by-N lower triangular matrix L;!>ifm <= n, the elements on and below the (n-m)-th superdiagonal contain the M-by-N lower trapezoidal matrix L;!>the remaining elements, with the array TAU, represent the unitary matrix Q as a product of elementary reflectors!>(see Further Details).!>She goes in as A and comes out as L plus the Q crumbs β iconic behavior πLDAβLDAis INTEGER.!>The leading dimension of the array A.LDA >= max(1,M).!>Don't mess this up or it's giving illegal value πTAUβTAUis COMPLEX array, dimension(min(M,N)).!>The scalar factors of the elementary reflectors (see Further Details).!>The little scalars that hold the Q receipts π§WORKβWORKis COMPLEX array, dimension(MAX(1,LWORK)).!>On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.!>She'll tell you the ideal workspace size on her way out, so considerate πLWORKβLWORKis INTEGER.!>The dimension of the array WORK.!>LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= N, otherwise.!>For optimum performanceLWORK >= N*NB, where NB is the optimal blocksize.!>!>IfLWORK = -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.!>So-1is the "just tell me the size, I'm not doing the work yet" mode β a whole mood, honestly πINFOβINFOis INTEGER.!>= 0: successful exit π!>< 0: ifINFO = -i, the i-th argument had an illegal value π (yes, the classic "-i means argument number i was sus")
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad ate, fr fr π«Ά
π Further Details: π
!>!> 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**H!>!> where tau is a complex scalar, and v is a complex vector with!> v(m-k+i+1:m) = 0 and v(m-k+i) = 1; v(1:m-k+i-1) is stored on exit in!> A(1:m-k+i-1,n-k+i), and tau in TAU(i).!>
ok so the way this works: Q is a stack of k elementary reflectors multiplied together, k = min(m,n), and each one is I - tau * v * v**H. The vector v has zeros down at v(m-k+i+1:m), a big 1 at v(m-k+i), and the juicy part v(1:m-k+i-1) gets stashed on exit in A(1:m-k+i-1,n-k+i), with its scalar chillin' in TAU(i). That's the whole tea ββ¨
Definition at line 138 of file cgeqlf.f. π
π« Author π«
Generated automatically by Doxygen for LAPACK from the source code. π€π (not a human, but she understood the assignment)
k bye bestie, go factor something π¦π β this page was brought to you by LAPACK, Version 3.12.0, and this exact page is SRC/cgeqlf.f(3). mwah ππ
π¦ 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