SRC/zgeqr2.f(3)

πŸ’… NAME

SRC/zgeqr2.f β€” bestie, this is the file, it's giving "I do one thing and I do it iconically" ✨


✨ SYNOPSIS

πŸŽ€ Functions/Subroutines

  • subroutine zgeqr2 (m, n, a, lda, tau, work, info) β€” ZGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm. No cap, that's the whole vibe πŸ’«

πŸ¦‹ Function/Subroutine Documentation

subroutine zgeqr2 (integer m, integer n, complex*16, dimension( lda, * ) a,
    integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * )
    work, integer info)

ZGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm. 🫢

🌸 Purpose:

!>
!> ZGEQR2 computes a QR factorization of a complex 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.
!>
!>

Like, it literally takes your matrix and splits it into Q and R. The math is mathing πŸ”₯

πŸ‘‘ Parameters

M

!>          M is INTEGER
!>          The number of rows of the matrix A.  M >= 0.
!>

How many rows A has. It's M >= 0 β€” so zero rows is legal, don't @ me πŸ™ˆ

N

!>          N is INTEGER
!>          The number of columns of the matrix A.  N >= 0.
!>

How many columns A has. Again, N >= 0. Slay πŸ’…

A

!>          A is COMPLEX*16 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 unitary matrix Q as a
!>          product of elementary reflectors (see Further Details).
!>

Okay so on entry this is just your matrix A β€” on exit it's a whole glow-up ✨ The diagonal-and-above part becomes the min(m,n) by n upper trapezoidal matrix R (and R is upper triangular if m >= n). Everything below the diagonal is not junk β€” combined with TAU, it's secretly holding the unitary matrix Q as a product of elementary reflectors. See Further Details, iykyk πŸ’–

LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,M).
!>

The leading dimension of the array A, and it must satisfy LDA >= max(1,M). Not a suggestion, bestie 🚨

TAU

!>          TAU is COMPLEX*16 array, dimension (min(M,N))
!>          The scalar factors of the elementary reflectors (see Further
!>          Details).
!>

The scalar factors of the elementary reflectors, sized (min(M,N)). Little scalars, big job πŸŽ€

WORK

!>          WORK is COMPLEX*16 array, dimension (N)
!>

Scratch space, dimension (N). It's the backstage crew of this routine 🌟

INFO

!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -i, the i-th argument had an illegal value
!>

The vibe check at the end: = 0 means successful exit πŸŽ‰ and < 0 means 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.

Four institutions, one iconique subroutine πŸ‘‘

🌈 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**H
!>
!>  where tau is a complex scalar, and v is a complex 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).
!>

So Q is a product of elementary reflectors, Q = H(1) H(2) . . . H(k) where k = min(m,n), and each H(i) has the form H(i) = I - tau * v * v**H. Here tau is a complex scalar and v is a complex 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). Literally storing lore in the lower triangle πŸ’€βœ¨


Definition at line 129 of file zgeqr2.f. Main character energy at line 129, fr fr πŸ”₯

⭐ Author

Generated automatically by Doxygen for LAPACK from the source code. (Yes the robots wrote this part, and honestly? They ate πŸ€–πŸ’…)


And that's the whole page bestie! This was LAPACK, Version 3.12.0, live from SRC/zgeqr2.f(3). Go factor something gorgeous πŸŽ€βœ¨πŸ¦‹πŸ’–

πŸ“¦ where this page comes from