geqrt(3)

πŸ’– geqrt(3) β€” Library Functions Manual πŸ’–

okay so bestie, this is geqrt(3) from the Library Functions Manual, and it's giving linear algebra main character energy ✨ β€” blocked QR factorization, four flavors (real, double, complex, complex*16), the whole squad. Let's get into it 🫢


🌸 NAME 🌸

geqrt β€” geqrt: QR factor, with T πŸ’…


✨ SYNOPSIS ✨

πŸŽ€ Functions πŸŽ€

  • subroutine cgeqrt (m, n, nb, a, lda, t, ldt, work, info) β€” CGEQRT
  • subroutine dgeqrt (m, n, nb, a, lda, t, ldt, work, info) β€” DGEQRT
  • subroutine sgeqrt (m, n, nb, a, lda, t, ldt, work, info) β€” SGEQRT
  • subroutine zgeqrt (m, n, nb, a, lda, t, ldt, work, info) β€” ZGEQRT

πŸ¦‹ Detailed Description πŸ¦‹

This is the landing page for the whole geqrt family β€” every single variant gets its own full writeup under Function Documentation below, so scroll like your GPA depends on it πŸ“š


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ subroutine cgeqrt

subroutine cgeqrt (integer m, integer n, integer nb, complex, dimension(
    lda, * ) a, integer lda, complex, dimension( ldt, * ) t, integer ldt,
    complex, dimension( * ) work, integer info)

CGEQRT β€” the complex one, obviously πŸ’…

🌟 Purpose 🌟

CGEQRT computes a blocked QR factorization of a complex M-by-N matrix A using the compact WY representation of Q. No cap, that's the whole gig ✨

🌟 Parameters 🌟

  • M β€” M is INTEGER. The number of rows of the matrix A. M >= 0 (zero rows is legal, bestie, it's just a very sad little matrix 😭).
  • N β€” N is INTEGER. The number of columns of the matrix A. N >= 0.
  • NB β€” NB is INTEGER. The block size to be used in the blocked QR. MIN(M,N) >= NB >= 1. Pick it wisely, it's the vibe check for your blocking πŸ”₯
  • A β€” A is COMPLEX 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 are the columns of V. So it comes in as A and leaves as two whole moods β€” iconic behaviour πŸ‘‘
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
  • T β€” T is COMPLEX array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details 🧚
  • LDT β€” LDT is INTEGER. The leading dimension of the array T. LDT >= NB.
  • WORK β€” WORK is COMPLEX array, dimension (NB*N).
  • 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 V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is

             V = (  1       )
                 ( v1  1    )
                 ( v1 v2  1 )
                 ( v1 v2 v3 )
                 ( v1 v2 v3 )

where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A. (Not me storing everything except the ones πŸ™ˆ)

Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as

             T = (T1 T2 ... TB).

Definition at line 140 of file cgeqrt.f.


πŸ’œ subroutine dgeqrt

subroutine dgeqrt (integer m, integer n, integer nb, double precision,
    dimension( lda, * ) a, integer lda, double precision, dimension( ldt, *
    ) t, integer ldt, double precision, dimension( * ) work, integer info)

DGEQRT β€” double precision, double the drama πŸ”₯

🌟 Purpose 🌟

DGEQRT computes a blocked QR factorization of a real M-by-N matrix A using the compact WY representation of Q. Same energy, real numbers ✨

🌟 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.
  • NB β€” NB is INTEGER. The block size to be used in the blocked QR. MIN(M,N) >= NB >= 1.
  • 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 are the columns of V.
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
  • T β€” T is DOUBLE PRECISION array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.
  • LDT β€” LDT is INTEGER. The leading dimension of the array T. LDT >= NB.
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (NB*N).
  • 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 V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is

             V = (  1       )
                 ( v1  1    )
                 ( v1 v2  1 )
                 ( v1 v2 v3 )
                 ( v1 v2 v3 )

where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A.

Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as

             T = (T1 T2 ... TB).

Definition at line 140 of file dgeqrt.f.


πŸ’œ subroutine sgeqrt

subroutine sgeqrt (integer m, integer n, integer nb, real, dimension( lda, *
    ) a, integer lda, real, dimension( ldt, * ) t, integer ldt, real,
    dimension( * ) work, integer info)

SGEQRT β€” single precision, single-handedly carrying the real-number agenda πŸŽ€

🌟 Purpose 🌟

SGEQRT computes a blocked QR factorization of a real M-by-N matrix A using the compact WY representation of Q. 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.
  • NB β€” NB is INTEGER. The block size to be used in the blocked QR. MIN(M,N) >= NB >= 1.
  • A β€” A is REAL 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 are the columns of V.
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
  • T β€” T is REAL array, dimension (LDT,MIN(M,N)). The upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.
  • LDT β€” LDT is INTEGER. The leading dimension of the array T. LDT >= NB.
  • WORK β€” WORK is REAL array, dimension (NB*N).
  • 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 V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is

             V = (  1       )
                 ( v1  1    )
                 ( v1 v2  1 )
                 ( v1 v2 v3 )
                 ( v1 v2 v3 )

where the vi's represent the vectors which define H(i), which are returned in the matrix A. The 1's along the diagonal of V are not stored in A.

Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as

             T = (T1 T2 ... TB).

Definition at line 140 of file sgeqrt.f.


πŸ’œ subroutine zgeqrt

subroutine zgeqrt (integer m, integer n, integer nb, complex*16, dimension(
    lda, * ) a, integer lda, complex*16, dimension( ldt, * ) t, integer ldt,
    complex*16, dimension( * ) work, integer info)

ZGEQRT β€” complex*16, aka the double-precision complex one, the final boss of this squad 🌈

🌟 Purpose 🌟

ZGEQRT computes a blocked QR factorization of a complex M-by-N matrix A using the compact WY representation of Q. Big numbers, big feelings πŸ’œ

🌟 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.
  • NB β€” NB is INTEGER. The block size to be used in the blocked QR. MIN(M,N) >= NB >= 1.
  • A
  • A β€” COMPLEX*16 array, dimension (LDA,N). On entry it's the M-by-N matrix A, and on exit the elements on and above the diagonal hold the min(M,N)-by-N upper trapezoidal matrix R (and R is upper triangular if M >= N), while the elements below the diagonal are the columns of V. So A literally gets a glow-up mid-call, no cap. πŸ’…
  • LDA β€” INTEGER, obviously, and it's the leading dimension of the array A. Rule of the land: LDA >= max(1,M). Respect the bounds bestie, she's picky about this. πŸŽ€
  • T β€” COMPLEX*16 array, dimension (LDT,MIN(M,N)). It's holding the upper triangular block reflectors, packed all cute and compact as a sequence of upper triangular blocks. The details are below if you're curious (you should be). ✨
  • LDT β€” INTEGER, the leading dimension of the array T. Constraint: LDT >= NB. That's it, that's the rule. πŸ¦‹
  • WORK β€” COMPLEX*16 array, dimension (NB*N). Scratch space, doing her little behind-the-scenes job. 🌸
  • INFO β€” INTEGER, the vibe check at the end:
    • = 0: successful exit, we ate and left no crumbs πŸ“
    • < 0: if INFO = -i, the i-th argument had an illegal value, aka somebody passed something cursed 😭

πŸ‘‘ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Like, four whole institutions collaborated on this. Group project that actually worked. iconic. 🫢


πŸ” Further Details:

Okay this is the fun part, the lore. πŸ’–

The matrix V stores the elementary reflectors H(i) in the i-th column below the diagonal. For example, if M=5 and N=3, the matrix V is:

     V = (  1       )
         ( v1  1    )
         ( v1 v2  1 )
         ( v1 v2 v3 )
         ( v1 v2 v3 )

where the vi's represent the vectors which define H(i), which are returned in the matrix A. And here's the cute little detail: the 1's along the diagonal of V are not stored in A. They're implied, they're a vibe, they're main character energy that doesn't need to be written down. ✨

Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each block is of order NB except for the last block, which is of order IB = K - (B-1)*NB. So the last one is always the special little guy. 🧚

For each of the B blocks, an upper triangular block reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB for the last block) T's are stored in the NB-by-K matrix T as:

     T = (T1 T2 ... TB).

Look at her, all lined up in a row. Obsessed. πŸŽ€


Definition at line 140 of file zgeqrt.f.

πŸ¦‹ Author

Generated automatically by Doxygen for LAPACK from the source code β€” so like, a robot wrote this part, but a robot with taste ngl.


✨ and that's the whole page bestie ✨ this lil masterpiece is from LAPACK Version 3.12.0, and the date on the original footer is baked right into that same line β€” so go forth and factor your block reflectors, fr fr. πŸ’œ slay πŸ’…

πŸ“¦ where this page comes from