/home/abui...L/sgeqrf.f(3)

๐Ÿ“ฆ version 3.12.0, in opensuse-leap 16.0

๐ŸŽ€ /home/abui...L/sgeqrf.f(3) โ€” Library Functions Manual ๐ŸŽ€

okay bestie so this is a page from the LAPACK manual โ€” Version 3.12.0 โ€” and it's lowkey one of the most important routines in the whole factorization-verse. Let's get into it ๐Ÿ’…


โœจ NAME โœจ

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/VARIANTS/qr/LL/sgeqrf.f

yeah that's the whole path, that's the name, she's that girl ๐Ÿ’€ no short nickname, the path IS the brand. it's giving "main character energy" in a build directory.


๐ŸŒธ SYNOPSIS ๐ŸŒธ

Functions/Subroutines

subroutine SGEQRF (m, n, a, lda, tau, work, lwork, info)

SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm. โ€” periodt. this is the left-looking, Level 3 BLAS variant, not the regular one. iykyk ๐Ÿ”ฅ


๐Ÿฆ‹ Function/Subroutine Documentation ๐Ÿฆ‹

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

SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm.

๐Ÿ’– Purpose ๐Ÿ’–

okay so here's the vibe: SGEQRF computes a QR factorization of a real M-by-N matrix A: and the whole glow-up is

A = Q * R.

and like โ€” this is the left-looking Level 3 BLAS version of the algorithm. ๐Ÿซถ that's literally the whole point, she does the QR thing but left-looking, and she does it with Level 3 BLAS, slay.

๐Ÿ‘‘ Parameters ๐Ÿ‘‘

  • M โ€” M is INTEGER. the number of rows of the matrix A. requirement: M >= 0. no negative rows allowed bestie, we don't do that here โœจ
  • N โ€” N is INTEGER. the number of columns of the matrix A. requirement: N >= 0. same energy, N >= 0 or nothing ๐ŸŒˆ
  • A โ€” A is REAL array, dimension (LDA,N). on entry: it's 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 (and yes, R is upper triangular if m >= n); the elements below the diagonal, together with the array TAU, represent the orthogonal matrix Q as a product of min(m,n) elementary reflectors (see Further Details ๐Ÿ‘€). she transforms, she doesn't disappear ๐Ÿ’…
  • LDA โ€” LDA is INTEGER. the leading dimension of the array A. requirement: LDA >= max(1,M). respect the stride, always ๐ŸŽ€
  • TAU โ€” TAU is REAL array, dimension (min(M,N)). the scalar factors of the elementary reflectors (again โ€” see Further Details, it's all there). these lil scalars are the whole personality of Q ngl ๐Ÿ’œ
  • WORK โ€” WORK is REAL array, dimension (MAX(1,LWORK)). on exit: if INFO = 0, then WORK(1) returns the optimal LWORK. love a workspace that reports back ๐Ÿซถ
  • LWORK โ€” LWORK is INTEGER.

it's the dimension of the array WORK. the rules: LWORK >= 1 if MIN(M,N) = 0, otherwise the dimension can be divided into three parts. THREE parts. not two. not four. three. ๐Ÿ”ฅ

  1. โœจ the part for the triangular factor T. if the very last T is not bigger than any of the rest, then this part is NB x ceiling(K/NB), otherwise, NB x (K-NT), where K = min(M,N) and NT is the dimension of the very last T
  2. โœจ the part for the very last T when T is bigger than any of the rest T. the size of this part is NT x NT, where NT = K - ceiling ((K-NX)/NB) x NB, where K = min(M,N), and NX is calculated by:
NX = MAX( 0, ILAENV( 3, 'SGEQRF', ' ', M, N, -1, -1 ) )
  1. โœจ the part for dlarfb โ€” size is max((N-M)*K, (N-M)*NB, K*NB, NB*NB)

so, and this is the moment, LWORK = part1 + part2 + part3 ๐Ÿงฎ ate.

if LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. so don't come for her about LWORK when you asked for the query. she said what she said ๐Ÿ’€
  • INFO โ€” INFO is INTEGER. the receipts:
    • = 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.

the whole squad, the founding mothers and fathers of this factorization fr fr ๐Ÿ‘‘

๐Ÿ“… Date ๐Ÿ“…

December 2016

(iconic, vintage, still serving ๐Ÿ’…)

๐Ÿงš Further 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).

and each H(i) has the form:

H(i) = I - tau * v * v'

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). ๐Ÿฆ‹ look at her. structured. iconic. no cap.

โญ Definition at line 151 of file sgeqrf.f. โญ


๐Ÿ’ซ Sign-off ๐Ÿ’ซ

this page was Generated automatically by Doxygen for LAPACK from the source code โ€” so like, a robot wrote it, but i'm here to make it cute ๐Ÿ’–

LAPACK โ€” Version 3.12.0 ๐ŸŽ€

okay bye bestie, go factor some QR, drink water, and remember: LWORK = part1 + part2 + part3 ๐ŸŒˆ๐Ÿ’œ

๐Ÿ“ฆ where this page comes from