geqrt3(3)

πŸŽ€ geqrt3(3) β€” the QR glow-up, recursive panel edition ✨

okay bestie, sit down, because geqrt3(3) is about to become your new hyperfixation. this is a whole family of routines (cgeqrt3, dgeqrt3, sgeqrt3, zgeqrt3) that recursively compute a QR factorization using the compact WY representation of Q. yes the whole squad is here. it's giving linear algebra but make it fabulous. πŸ’…


πŸ’– NAME πŸ’–

geqrt3 β€” geqrt3: QR factor, with T, recursive panel. that's the whole name, no notes, periodt. 🫢


✨ SYNOPSIS ✨

🌸 Functions 🌸

  • recursive subroutine cgeqrt3 (m, n, a, lda, t, ldt, info) β€” CGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q.
  • recursive subroutine dgeqrt3 (m, n, a, lda, t, ldt, info) β€” DGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q.
  • recursive subroutine sgeqrt3 (m, n, a, lda, t, ldt, info) β€” SGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q.
  • recursive subroutine zgeqrt3 (m, n, a, lda, t, ldt, info) β€” ZGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q.

πŸ¦‹ Detailed Description πŸ¦‹

it's the details, babe. the detailed description lives down below in the Function Documentation section where each of the four subroutines gets its own little main-character moment. keep scrolling, i promise it's worth it. πŸ’œ


πŸ‘‘ Function Documentation πŸ‘‘

🌈 recursive subroutine cgeqrt3 (integer m, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( ldt, * ) t, integer ldt, integer info)

recursive subroutine cgeqrt3 (integer m, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( ldt, * ) t, integer ldt, integer info)

CGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q. literally that's the whole vibe check and it passes. πŸ”₯

πŸ’… Purpose

CGEQRT3 recursively computes a QR factorization of a complex M-by-N matrix A, using the compact WY representation of Q. Based on the algorithm of Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000.

so it's a complex M-by-N matrix A getting QR-factored recursively, compact WY representation of Q, and the algorithm is straight from Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000. cite your sources bestie, we love an academic icon. πŸŽ€

πŸ“ Parameters

M

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

M is INTEGER and it's the number of rows of the matrix A. constraint, bestie: M >= N. 🫢

N

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

N is INTEGER and it's the number of columns of the matrix A. and N >= 0, so zero columns is lowkey allowed. πŸ’€

A

A is COMPLEX array, dimension (LDA,N) On entry, the complex M-by-N matrix A. On exit, the elements on and above the diagonal contain the N-by-N upper triangular matrix R; the elements below the diagonal are the columns of V. See below for further details.

A is a COMPLEX array, dimension (LDA,N). on entry it's the complex M-by-N matrix A β€” on exit the elements on and above the diagonal contain the N-by-N upper triangular matrix R, and the elements below the diagonal are the columns of V. glow-up in place, no cap. see below for further details. πŸ‘€

LDA

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

LDA is INTEGER, the leading dimension of the array A. rule: LDA >= max(1,M). 🧚

T

T is COMPLEX array, dimension (LDT,N) The N-by-N upper triangular factor of the block reflector. The elements on and above the diagonal contain the block reflector T; the elements below the diagonal are not used. See below for further details.

T is a COMPLEX array, dimension (LDT,N). it's the N-by-N upper triangular factor of the block reflector. elements on and above the diagonal contain the block reflector T; elements below the diagonal are not used β€” they're just there existing, like a background character. see below for further details. ✨

LDT

LDT is INTEGER The leading dimension of the array T. LDT >= max(1,N).

LDT is INTEGER, the leading dimension of the array T. rule: LDT >= max(1,N). πŸ’–

INFO

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

INFO is INTEGER. = 0 means successful exit (slay πŸŽ‰). < 0 means if INFO = -i, the i-th argument had an illegal value β€” so it's snitching on which argument was the problem. iconic behaviour tbh.

🌸 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

the whole academic friend group showed up to take credit. we respect it. 🫑

πŸ¦‹ 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. The block reflector H is then given by H = I - V * T * VH where VH is the conjugate transpose of V. For details of the algorithm, see Elmroth and Gustavson (cited above).

so V is the matrix that stores the elementary reflectors H(i) in the i-th column below the diagonal. example time, bestie: 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 β€” they're too iconic to be stored, apparently. πŸ™ˆ the block reflector H is then given by

             H = I - V * T * V**H

where V**H is the conjugate transpose of V. and for details of the algorithm, see Elmroth and Gustavson (cited above). iykyk. πŸ“š

Definition at line 131 of file cgeqrt3.f.


🌈 recursive subroutine dgeqrt3 (integer m, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( ldt, * ) t, integer ldt, integer info)

recursive subroutine dgeqrt3 (integer m, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( ldt, * ) t, integer ldt, integer info)

DGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q. same energy, double precision edition. πŸ’œ

πŸ’… Purpose

DGEQRT3 recursively computes a QR factorization of a real M-by-N matrix A, using the compact WY representation of Q. Based on the algorithm of Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000.

DGEQRT3 recursively computes a QR factorization of a real M-by-N matrix A, using the compact WY representation of Q. same source: Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000. consistency queen. πŸ‘‘

πŸ“ Parameters

M

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

M is INTEGER, number of rows of the matrix A. M >= N, no exceptions. 🫢

N

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

N is INTEGER, number of columns of the matrix A. N >= 0. ✨

A

A is DOUBLE PRECISION array, dimension (LDA,N) On entry, the real M-by-N matrix A. On exit, the elements on and above the diagonal contain the N-by-N upper triangular matrix R; the elements below the diagonal are the columns of V. See below for further details.

A is a DOUBLE PRECISION array, dimension (LDA,N). on entry it's the real M-by-N matrix A. on exit, elements on and above the diagonal hold the N-by-N upper triangular matrix R; elements below the diagonal are the columns of V. see below for further details. πŸ’…

LDA

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

LDA is INTEGER, the leading dimension of the array A. LDA >= max(1,M). πŸ’–

T

T is DOUBLE PRECISION array, dimension (LDT,N) The N-by-N upper triangular factor of the block reflector. The elements on and above the diagonal contain the block reflector T; the elements below the diagonal are not used. See below for further details.

T is a DOUBLE PRECISION array, dimension (LDT,N), the N-by-N upper triangular factor of the block reflector. on and above the diagonal: block reflector T. below the diagonal: not used, don't even look at it. see below for further details. πŸ¦‹

LDT

LDT is INTEGER The leading dimension of the array T. LDT >= max(1,N).

LDT is INTEGER, the leading dimension of the array T. LDT >= max(1,N). πŸŽ€

INFO

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

INFO is INTEGER. = 0: successful exit, we cheer. πŸŽ‰ < 0: if INFO = -i, the i-th argument had an illegal value. it's telling on the culprit, respectfully. πŸ’€

🌸 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

same iconic author lineup. 🫑

πŸ¦‹ 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. The block reflector H is then given by H = I - V * T * VT where VT is the transpose of V. For details of the algorithm, see Elmroth and Gustavson (cited above).

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. the block reflector H is then given by

             H = I - V * T * V**T

where V**T is the transpose of V β€” real edition, so it's plain transpose, not conjugate. no conjugation here bestie, that's a complex-girl thing. 🌈

and for details of the algorithm, see Elmroth and Gustavson (cited above).

Definition at line 131 of file dgeqrt3.f.


🌈 recursive subroutine sgeqrt3 (integer m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( ldt, * ) t, integer ldt, integer info)

recursive subroutine sgeqrt3 (integer m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( ldt, * ) t, integer ldt, integer info)

SGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q. single precision, single-handedly serving looks. πŸ”₯

πŸ’… Purpose

SGEQRT3 recursively computes a QR factorization of a real M-by-N matrix A, using the compact WY representation of Q. Based on the algorithm of Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000.

SGEQRT3 recursively computes a QR factorization of a real M-by-N matrix A, using the compact WY representation of Q. built on Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000. the receipts are right there. 🧾

πŸ“ Parameters

M

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

M is INTEGER, the number of rows of the matrix A. M >= N. 🫢

N

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

N is INTEGER, the number of columns of the matrix A. N >= 0. ✨

A

A is REAL array, dimension (LDA,N) On entry, the real M-by-N matrix A. On exit, the elements on and above the diagonal contain the N-by-N upper triangular matrix R; the elements below the diagonal are the columns of V. See below for further details.

A is a REAL array, dimension (LDA,N). on entry, the real M-by-N matrix A. on exit, elements on and above the diagonal contain the N-by-N upper triangular matrix R; elements below the diagonal are the columns of V. see below for further details, obviously. πŸ‘€

LDA

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

LDA is INTEGER, the leading dimension of the array A. LDA >= max(1,M). πŸ’–

T

T is REAL array, dimension (LDT,N) The N-by-N upper triangular factor of the block reflector. The elements on and above the diagonal contain the block reflector T; the elements below the diagonal are not used. See below for further details.

T is a REAL array, dimension (LDT,N), the N-by-N upper triangular factor of the block reflector. elements on and above the diagonal contain block reflector T; below the diagonal: not used. it's giving "we don't talk about that". πŸ™ˆ

LDT

LDT is INTEGER The leading dimension of the array T. LDT >= max(1,N).

LDT is INTEGER, the leading dimension of the array T. LDT >= max(1,N). πŸŽ€

INFO

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

INFO is INTEGER. = 0: successful exit. πŸŽ‰ < 0: if INFO = -i, the i-th argument had an illegal value. snitch mode activated. πŸ’€

🌸 Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

same four, same energy. 🫑

πŸ¦‹ 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. The block reflector H is then given by H = I - V * T * VT where VT is the transpose of V. For details of the algorithm, see Elmroth and Gustavson (cited above).

V stores the elementary reflectors H(i) in the i-th column below the diagonal. if M=5 and N=3, then 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. the block reflector H is then given by

             H = I - V * T * V**T

where V**T is the transpose of V. and for details of the algorithm, see Elmroth and Gustavson (cited above). πŸ’œ

Definition at line 131 of file sgeqrt3.f.


🌈 recursive subroutine zgeqrt3 (integer m, integer n, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( ldt, * ) t, integer ldt, integer info)

recursive subroutine zgeqrt3 (integer m, integer n, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( ldt, * ) t, integer ldt, integer info)

ZGEQRT3 recursively computes a QR factorization of a general real or complex matrix using the compact WY representation of Q. double complex has entered the chat and she is thriving. πŸ‘‘πŸ’…

πŸ’… Purpose

ZGEQRT3 recursively computes a QR factorization of a complex M-by-N matrix A, using the compact WY representation of Q. Based on the algorithm of Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000.

ZGEQRT3 recursively computes a QR factorization of a complex M-by-N matrix A, using the compact WY representation of Q. and yes, once again, based on Elmroth and Gustavson, IBM J. Res. Develop. Vol 44 No. 4 July 2000. the citation is basically part of the outfit at this point. πŸ“šβœ¨

πŸ“ Parameters

M

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

M is INTEGER, the number of rows of the matrix A. and M >= N, as always. 🫢

N

stay tuned bestie, there's more coming β€” part 2 has the rest of the receipts πŸ‘€

  • N β€” it's an INTEGER, bestie, and it's literally just the number of columns of the matrix A. Rule: N >= 0. That's it, that's the whole vibe. ✨
  • A β€” a big juicy COMPLEX*16 array, dimension (LDA,N). On entry it's your complex M-by-N matrix A. On exit? Glow-up era πŸ’… β€” everything on and above the diagonal now holds the N-by-N upper triangular matrix R, and everything below the diagonal is the columns of V. (Scroll down for the full tea on that, iykyk.)
  • LDA β€” INTEGER, the leading dimension of the array A. Constraint: LDA >= max(1,M). Don't skimp on it, she'll notice. πŸ‘‘
  • T β€” COMPLEX*16 array, dimension (LDT,N). This is the N-by-N upper triangular factor of the block reflector, main character energy only. The elements on and above the diagonal contain the block reflector T; the elements below the diagonal are literally not used, they're just standing there. See below for further details 🫢
  • LDT β€” INTEGER, the leading dimension of the array T. Constraint: LDT >= max(1,N). Periodt.
  • INFO β€” INTEGER, the receipts πŸ“‹:
    • = 0 β€” successful exit, we ate, no notes πŸ”₯
    • < 0 β€” if INFO = -i, then the i-th argument had an illegal value. Not cute. Fix it. 😭

🌸 Author 🌸

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ¦‹ Further Details: πŸ¦‹

Okay so here's the part where it gets good. 🧚 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) β€” and those are returned in the matrix A. Note that the 1's along the diagonal of V are not stored in A. Sneaky little icons. πŸ™ˆ

The block reflector H is then given by:

     H = I - V * T * V**H

where V**H is the conjugate transpose of V. Conjugate transpose is the moment, fr fr. ⭐

For details of the algorithm, see Elmroth and Gustavson (cited above). Go read it, it's giving academic icon behavior πŸ“šβœ¨


Definition at line 131 of file zgeqrt3.f.

πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code.


That's the whole page bestie, we made it πŸŽ€πŸ’– This lil' beauty is LAPACK Version 3.12.0, the geqrt3(3) page β€” go forth and factorize responsibly! πŸ¦‹πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from