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:

  • Q is a N-by-N orthogonal matrix;
  • L is a lower-triangular M-by-M matrix;
  • 0 is a M-by-(N-M) zero matrix, if M < 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, the LWORK = -1 thing is a workspace query β€” the routine only figures out the optimal size of WORK, hands it back as the first entry of the WORK array, and XERBLA does not yell at you about LWORK. 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