geqlf(3)
π geqlf(3) β QL factor, bestie edition π
okay okay okay, so this one is geqlf, and it's living its best life in the Library Functions Manual β¨ she's a factorization queen, she comes in four flavors (complex, double, real, complex*16), and she's gonna break your matrix down into A = Q * L. no cap. let's get into it π
π NAME π
geqlf β geqlf: QL factor π
β¨ SYNOPSIS β¨
π¦ Functions π¦
subroutine cgeqlf (m, n, a, lda, tau, work, lwork, info)β CGEQLF πsubroutine dgeqlf (m, n, a, lda, tau, work, lwork, info)β DGEQLF πsubroutine sgeqlf (m, n, a, lda, tau, work, lwork, info)β SGEQLF πΏsubroutine zgeqlf (m, n, a, lda, tau, work, lwork, info)β ZGEQLF π§
πΈ Detailed Description πΈ
like, it's giving "four routines, one job" energy. each one takes your matrix and hands you back a Q and an L, iykyk. the details are all down in the Function Documentation section β literally everything you need is there π«Ά
π Function Documentation π
π subroutine cgeqlf π
subroutine cgeqlf (integer m, integer n, complex, dimension( lda, * ) a,
integer lda, complex, dimension( * ) tau, complex, dimension( * ) work,
integer lwork, integer info)
CGEQLF β the complex one, she's iconic π
Purpose
!>
!> CGEQLF computes a QL factorization of a complex M-by-N matrix A:
!> A = Q * L.
!>
like literally it takes your complex M-by-N matrix A and factors it as A = Q * L. slay β¨
Parameters
MβM is INTEGER. the number of rows of the matrixA.M >= 0πNβN is INTEGER. the number of columns of the matrixA.N >= 0πAβA is COMPLEX array, dimension (LDA,N). on entry, theM-by-NmatrixA. on exit:- if
m >= n, the lower triangle of the subarrayA(m-n+1:m,1:n)contains theN-by-Nlower triangular matrixL; - if
m <= n, the elements on and below the(n-m)-th superdiagonal contain theM-by-Nlower trapezoidal matrixL; - the remaining elements, with the array
TAU, represent the unitary matrixQas a product of elementary reflectors (see Further Details) πΈ
- if
LDAβLDA is INTEGER. the leading dimension of the arrayA.LDA >= max(1,M)π«TAUβTAU is COMPLEX array, dimension (min(M,N)). the scalar factors of the elementary reflectors (see Further Details) πWORKβWORK is COMPLEX array, dimension (MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the optimalLWORKβ¨LWORKβLWORK is INTEGER. the dimension of the arrayWORK.LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= N, otherwise. for optimum performanceLWORK >= N*NB, whereNBis the optimal blocksize.
bestie listen π 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 like, don't panic when nothing yells at you π
INFOβINFO is INTEGER= 0: successful exit π₯³< 0: ifINFO = -i, thei-th argument had an illegal value π
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
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).
!>
Definition at line 138 of file cgeqlf.f.
π subroutine dgeqlf π
subroutine dgeqlf (integer m, integer n, double precision, dimension( lda, * )
a, integer lda, double precision, dimension( * ) tau, double precision,
dimension( * ) work, integer lwork, integer info)
DGEQLF β double precision, double the drama (affectionate) π
Purpose
!>
!> DGEQLF computes a QL factorization of a real M-by-N matrix A:
!> A = Q * L.
!>
real M-by-N matrix in, A = Q * L out. periodt β¨
Parameters
MβM is INTEGER. the number of rows of the matrixA.M >= 0πNβN is INTEGER. the number of columns of the matrixA.N >= 0πAβA is DOUBLE PRECISION array, dimension (LDA,N). on entry, theM-by-NmatrixA. on exit:- if
m >= n, the lower triangle of the subarrayA(m-n+1:m,1:n)contains theN-by-Nlower triangular matrixL; - if
m <= n, the elements on and below the(n-m)-th superdiagonal contain theM-by-Nlower trapezoidal matrixL; - the remaining elements, with the array
TAU, represent the orthogonal matrixQas a product of elementary reflectors (see Further Details) πΈ
- if
LDAβLDA is INTEGER. the leading dimension of the arrayA.LDA >= max(1,M)π«TAUβTAU is DOUBLE PRECISION array, dimension (min(M,N)). the scalar factors of the elementary reflectors (see Further Details) πWORKβWORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the optimalLWORKβ¨LWORKβLWORK is INTEGER. the dimension of the arrayWORK.LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= N, otherwise. for optimum performanceLWORK >= N*NB, whereNBis the optimal blocksize.
okay so whenLWORK = -1, 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. it's giving "chill, it's fine" π«Ά
INFOβINFO is INTEGER= 0: successful exit π₯³< 0: ifINFO = -i, thei-th argument had an illegal value π
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
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**T
!>
!> where tau is a real scalar, and v is a real 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).
!>
Definition at line 138 of file dgeqlf.f.
π subroutine sgeqlf π
subroutine sgeqlf (integer m, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) tau, real, dimension( * ) work,
integer lwork, integer info)
SGEQLF β single precision, single-handedly carrying πΏ
Purpose
!>
!> SGEQLF computes a QL factorization of a real M-by-N matrix A:
!> A = Q * L.
!>
same deal, real numbers only: complex need not apply π
Parameters
MβM is INTEGER. the number of rows of the matrixA.M >= 0πNβN is INTEGER. the number of columns of the matrixA.N >= 0πAβA is REAL array, dimension (LDA,N). on entry, theM-by-NmatrixA. on exit:- if
m >= n, the lower triangle of the subarrayA(m-n+1:m,1:n)contains theN-by-Nlower triangular matrixL; - if
m <= n, the elements on and below the(n-m)-th superdiagonal contain theM-by-Nlower trapezoidal matrixL; - the remaining elements, with the array
TAU, represent the orthogonal matrixQas a product of elementary reflectors (see Further Details) πΈ
- if
LDAβLDA is INTEGER. the leading dimension of the arrayA.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, ifINFO = 0,WORK(1)returns the optimalLWORKβ¨LWORKβLWORK is INTEGER. the dimension of the arrayWORK.LWORK >= 1, ifMIN(M,N) = 0, andLWORK >= N, otherwise. for optimum performanceLWORK >= N*NB, whereNBis the optimal blocksize.
whenLWORK = -1, 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. yes, again. it's a whole thing π
INFOβINFO is INTEGER= 0: successful exit π₯³< 0: ifINFO = -i, thei-th argument had an illegal value π
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
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**T
!>
!> where tau is a real scalar, and v is a real 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).
!>
Definition at line 138 of file sgeqlf.f.
π subroutine zgeqlf π
subroutine zgeqlf (integer m, integer n, complex*16, dimension( lda, * ) a,
integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * )
work, integer lwork, integer info)
ZGEQLF β double complex, the main character of the family ππ§
Purpose
!>
!> ZGEQLF computes a QL factorization of a complex M-by-N matrix A:
!> A = Q * L.
!>
complex M-by-N, A = Q * L, no notes π₯
Parameters
MβM is INTEGER. the number of rows of the matrixA.M >= 0πNβN is INTEGER. the number of columns of the matrixA.N >= 0πA
ok and that's literally where part one runs out of page π the rest of A and all the other params are waiting in part two β hold that thought, don't go anywhere π
okay so bestie, we're picking up right in the middle of the argument glow-up π
A is a COMPLEX*16 array, dimension (LDA,N) πΈ
On entry, it's the M-by-N matrix A. On exit it's giving transformation:
- if
m >= n, the lower triangle of the subarrayA(m-n+1:m,1:n)contains the N-by-N lower triangular matrix L; - if
m <= n, the elements on and below the (n-m)-th superdiagonal contain the M-by-N lower trapezoidal matrix L; - the remaining elements, together with the array TAU, represent the unitary matrix Q as a product of elementary reflectors (see Further Details, boo, it's coming, keep reading π«Ά).
π LDA
LDA is INTEGER β it's the leading dimension of the array A, and the situation is LDA >= max(1,M). no cap, respect the leading dimension or perish π
π TAU
TAU is a COMPLEX*16 array, dimension (min(M,N)) β it's holding the scalar factors of the elementary reflectors (see Further Details again, we love a callback β¨).
π¦ WORK
WORK is a COMPLEX*16 array, dimension (MAX(1,LWORK)).
On exit, if INFO = 0, then WORK(1) returns the optimal LWORK. she tells you how much room she actually wanted, iconic behavior π
π§ LWORK
LWORK is INTEGER β the dimension of the array WORK.
LWORK >= 1, ifMIN(M,N) = 0LWORK >= N, otherwise
For optimum performance, LWORK >= N*NB, where NB is the optimal blocksize. treat her right and she performs, periodt π
also: 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 by XERBLA. so you can ask her "how much space, queen?" and she'll just tell you, no yelling π
β INFO
INFO is INTEGER:
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
zero means slay, negative means somebody handed her a bad argument and she's telling you exactly which one π₯
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
like, four whole institutions collaborated on this. main character energy fr fr π
β¨ Further Details
okay this is the part you actually need, bestie, pay attention π
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). literally everything has a home, nothing is wasted, we stan a tidy data layout π
π Definition
Definition at line 138 of file zgeqlf.f.
πΈ Author
Generated automatically by Doxygen for LAPACK from the source code.
aaaand that's the whole page, bestie, you made it to the end π
This lil beauty is LAPACK, Version 3.12.0, and it was generated for geqlf(3) back on the date stamped at the bottom of the original page β so if anything's changed since then, that's a whole different group chat ππ go forth and QL-factor, ily, bye π«Άβ¨
π¦ 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