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

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

🌸 NAME

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgeqr2p.f β€” and yes bestie that is literally the whole name, it's a Library Functions Manual situation, we love a dramatic full path πŸ’…


✨ SYNOPSIS

Functions/Subroutines

  • subroutine SGEQR2P (m, n, a, lda, tau, work, info) β€” SGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elements using an unblocked algorithm. 🫢

πŸŽ€ Function/Subroutine Documentation

subroutine SGEQR2P (integer m, integer n, real, dimension( lda, * ) a,
    integer lda, real, dimension( * ) tau, real, dimension( * ) work,
    integer info)

Okay so this is the icon, the main character: SGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elements using an unblocked algorithm. Periodt. ✨

Purpose

!>
!> SGEQR2P 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.
!>
!>

Like literally, break A into Q times that stacked ( R ) over ( 0 ) situation β€” Q is the m-by-m orthogonal bestie, R is upper-triangular n-by-n with nonnegative diagonal entries, and 0 is that (m-n)-by-n zero block when m > n. It's giving decomposition. 🌈

Parameters

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

The number of rows of the matrix A, and it has to be M >= 0 β€” no negative row energy allowed πŸ™ˆ

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

The number of columns of the matrix A. N >= 0, same rule, we're keeping it non-negative πŸŽ€

  • 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 diagonal entries of R
!>          are nonnegative; the elements below the diagonal,
!>          with the array TAU, represent the orthogonal matrix Q as a
!>          product of elementary reflectors (see Further Details).

A is REAL array, dimension (LDA,N). On entry it's the m by n matrix A, on exit it's a whole glow-up: the elements on and above the diagonal contain the min(m,n) by n upper trapezoidal matrix R (R is upper triangular if m >= n, slay), the diagonal entries of R are nonnegative, and the elements below the diagonal β€” together with the array TAU β€” represent the orthogonal 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. Constraint: LDA >= max(1,M). No cap, just math πŸ’…

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

TAU is REAL array, dimension (min(M,N)). It holds the scalar factors of the elementary reflectors β€” again, see Further Details below, it's all connected πŸ¦‹

  • WORK
!>          WORK is REAL array, dimension (N)

WORK is REAL array, dimension (N). The workspace. The little helper. We appreciate her 🌸

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

INFO is INTEGER, the vibe check at the end:

  • = 0: successful exit, we ate πŸ”₯
  • < 0: if INFO = -i, the i-th argument had an illegal value β€” so something you passed in was not it, go fix it 😭

Author

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

The whole squad of institutions behind it, we stan πŸ‘‘

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 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). And if you want the deep lore, See Lapack Working Note 203 for details 🧚


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


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code.


okay that's the whole page bestie, no notes πŸ’– Cute little sign-off: this was LAPACK, Version 3.12.0, and the page lives at /home/abui.../sgeqr2p.f(3) β€” go forth and factorize responsibly πŸŽ€βœ¨

πŸ“¦ where this page comes from