SRC/dgeqrf.f(3)

✨ Bestie, you've landed on SRC/dgeqrf.f(3) from the Library Functions Manual β€” yes, manual name folded in near the top, we're doing this right πŸ’…βœ¨

πŸ’– NAME πŸ’–

SRC/dgeqrf.f β€” that's the page, that's the name, no extra lore. πŸŽ€

πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine dgeqrf (m, n, a, lda, tau, work, lwork, info) β€” DGEQRF (short intro; the full signature is right below, bestie).

🌸 Function/Subroutine Documentation 🌸

subroutine dgeqrf (integer m, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) tau, double precision, dimension( * ) work, integer lwork, integer info)

DGEQRF β€” okay so this is the whole routine. Let's get into it. πŸ’–

🎯 Purpose 🎯

DGEQRF computes a QR factorization of a real M-by-N matrix A:

A = Q * ( R ),
         ( 0 )

where:

  • Q is a M-by-M orthogonal matrix;
  • R is an upper-triangular N-by-N matrix;
  • 0 is a (M-N)-by-N zero matrix, if M > N.

Periodt. That's the factorization vibe. ✨

🌈 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, the elements on and above the diagonal of the array contain the min(M,N)-by-N upper trapezoidal matrix R (R is upper triangular if m >= n); the elements below the diagonal, with the array TAU, represent the orthogonal matrix Q as a product of min(m,n) 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. 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.
  • 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(1) H(2) . . . H(k), 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:m) is stored on exit in A(i+1:m,i), and tau in TAU(i).

Definition at line 145 of file dgeqrf.f.

πŸŽ€ Author πŸŽ€

Generated automatically by Doxygen for LAPACK from the source code.


Signed off with LAPACK Version 3.12.0, from SRC/dgeqrf.f(3) β€” mwah, bestie πŸ’‹πŸ’–βœ¨

πŸ“¦ where this page comes from