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 matrix A. M >= 0 πŸ‘‘
  • N β€” N is INTEGER. the number of columns of the matrix A. N >= 0 πŸ‘‘
  • A β€” A is COMPLEX array, dimension (LDA,N). on entry, the M-by-N matrix A. on exit:
    • if m >= n, the lower triangle of the subarray A(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, with the array TAU, represent the unitary matrix Q as a product of elementary reflectors (see Further Details) 🌸
  • LDA β€” LDA is INTEGER. the leading dimension of the array A. 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, 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 >= N, otherwise. for optimum performance LWORK >= N*NB, where NB is the optimal blocksize.
bestie listen πŸ‘€ 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. so like, don't panic when nothing yells at you πŸ’€
  • 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

!>
!>  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 matrix A. M >= 0 πŸ‘‘
  • N β€” N is INTEGER. the number of columns of the matrix A. N >= 0 πŸ‘‘
  • A β€” A is DOUBLE PRECISION array, dimension (LDA,N). on entry, the M-by-N matrix A. on exit:
    • if m >= n, the lower triangle of the subarray A(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, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors (see Further Details) 🌸
  • LDA β€” LDA is INTEGER. the leading dimension of the array A. 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, 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 >= N, otherwise. for optimum performance LWORK >= N*NB, where NB is the optimal blocksize.
okay so when LWORK = -1, 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. it's giving "chill, it's fine" 🫢
  • 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

!>
!>  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 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:
    • if m >= n, the lower triangle of the subarray A(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, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors (see Further Details) 🌸
  • 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 >= N, otherwise. for optimum performance LWORK >= N*NB, where NB is the optimal blocksize.
when LWORK = -1, 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. yes, again. it's a whole thing πŸ’€
  • 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

!>
!>  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 matrix A. M >= 0 πŸ‘‘
  • N β€” N is INTEGER. the number of columns of the matrix A. 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 subarray A(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, if MIN(M,N) = 0
  • LWORK >= N, otherwise

For optimum performance, LWORK >= N*NB, where NB is the optimal blocksize. treat her right and she performs, periodt πŸ’…

also: 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. 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