/home/abui.../dgeqr2p.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

🌸 DGEQR2P β€” girl, let me tell you about QR factorization 🌸

okay so real talk, this is a page from the Library Functions Manual for /home/abui.../dgeqr2p.f(3) and honestly? it's giving legendary LAPACK energy. buckle up bestie πŸ’…


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dgeqr2p.f

like yes, that's the whole name, it's a whole path, she's built different πŸ’€ don't @ me, that's literally what the manpage says.


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine DGEQR2P (m, n, a, lda, tau, work, info) β€” DGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elements using an unblocked algorithm. no cap, that's the whole vibe πŸŽ€

πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

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

DGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elements using an unblocked algorithm. icon behavior, fr fr ✨

πŸ’– Purpose πŸ’–

!>
!> DGEQR2P 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 with nonnegative diagonal
!>    entries;
!>    0 is a (m-n)-by-n zero matrix, if m > n.
!>
!>

so basically she takes your sweet little m-by-n matrix A and splits it into Q (orthogonal, m-by-m, main character) times that stacked R / 0 situation β€” where R is upper-triangular n-by-n with nonnegative diagonal entries, and the 0 is your (m-n)-by-n zero block that only shows up when m > n. slay 🫢


🌈 Parameters 🌈

  • M β€” !> M is INTEGER / the number of rows of the matrix A. M >= 0. yes bestie, non-negative, we don't do negativity here πŸ’œ
  • N β€” !> N is INTEGER / the number of columns of the matrix A. N >= 0. same energy, keep it >= 0 😌
  • A β€” !> A is DOUBLE PRECISION array, dimension (LDA,N)
    • on entry: the m by n matrix A. she's fresh, she's untouched 🌸
    • on exit: the elements on and above the diagonal of the array contain the min(m,n) by n upper trapezoidal matrix R (and R is upper triangular if m >= n, iykyk). the diagonal entries of R are nonnegative; the elements below the diagonal, together with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors (peep Further Details below πŸ‘€). it's giving glow-up makeover πŸ”₯
  • LDA β€” !> LDA is INTEGER / the leading dimension of the array A. LDA >= max(1,M). don't skip this one, she will notice πŸ’…
  • TAU β€” !> TAU is DOUBLE PRECISION array, dimension (min(M,N)) / the scalar factors of the elementary reflectors (again, see Further Details πŸŽ€)
  • WORK β€” !> WORK is DOUBLE PRECISION array, dimension (N) / that's it, that's the workspace, she's just doing her job 🐝
  • INFO β€” !> INFO is INTEGER
    • = 0: successful exit ✨ we love a happy ending
    • < 0: if INFO = -i, the i-th argument had an illegal value 😭 someone did NOT read the constraints

🧚 Author 🧚

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

the literal dream team, four institutions deep, no cap πŸ‘‘


⭐ 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).
!>
!> See Lapack Working Note 203 for details
!>

so Q is a whole conga line of elementary reflectors H(1) H(2) . . . H(k) where k = min(m,n) β€” and every single H(i) is literally I - tau * v * v**T. tau is a real scalar, v is a real vector where v(1:i-1) = 0 and v(i) = 1 (so fancy), and on exit v(i+1:m) goes and lives in A(i+1:m,i) while tau chills in TAU(i). if you want the full lore, see Lapack Working Note 203 for details πŸ’€πŸ“š

⚠️ heads up bestie: A gets overwritten. on entry she's your matrix, on exit she's R plus the reflector vectors below the diagonal. if you needed the original A, sorry babe, she's gone πŸ™ˆ

Definition at line 133 of file dgeqr2p.f. πŸ“


🌸 Author (the other one) 🌸

Generated automatically by Doxygen for LAPACK from the source code. she's not typed by hand, she's born this way, machine-made and still flawless πŸ’–


mwah πŸ’‹ that's the whole page, babes β€” LAPACK, Version 3.12.0, dated /home/abui.../dgeqr2p.f(3). go forth and factorize responsibly πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from