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 β€” M is INTEGER. !> M is 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 β€” N is INTEGER. !> N is the number of columns of the matrix A. N >= 0. !> Same energy, but columns this time πŸ“
  • 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). !> She goes in as A and comes out as L plus the Q crumbs β€” iconic behavior πŸ’€
  • LDA β€” LDA is INTEGER. !> The leading dimension of the array A. LDA >= max(1,M). !> Don't mess this up or it's giving illegal value πŸ™ˆ
  • TAU β€” TAU is 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 β€” WORK is COMPLEX array, dimension (MAX(1,LWORK)). !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> She'll tell you the ideal workspace size on her way out, so considerate πŸ’œ
  • 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. !> !> 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 -1 is the "just tell me the size, I'm not doing the work yet" mode β€” a whole mood, honestly πŸ’…
  • INFO β€” INFO is INTEGER. !> = 0: successful exit 🌈 !> < 0: if INFO = -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