SRC/stzrzf.f(3)
πΈ SRC/stzrzf.f β like, the library functions manual page for stzrzf (iykyk) πΈ
okay bestie so this is the SRC/stzrzf.f(3) page from the Library Functions Manual and it's literally all about one little Fortran subroutine that does one very specific slay. buckle up π
β¨ NAME β¨
SRC/stzrzf.f β that's it, that's the name, she's lowkey iconic for it π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine stzrzf (m, n, a, lda, tau, work, lwork, info)β STZRZF π¦
β¨ Function/Subroutine Documentation β¨
subroutine stzrzf (integer m, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) tau, real, dimension( * ) work,
integer lwork, integer info)
STZRZF π
π§ Purpose π§
okay so here's the vibe, straight up:
!>
!> STZRZF reduces the M-by-N ( M<=N ) real upper trapezoidal matrix A
!> to upper triangular form by means of orthogonal transformations.
!>
!> The upper trapezoidal matrix A is factored as
!>
!> A = ( R 0 ) * Z,
!>
!> where Z is an N-by-N orthogonal matrix and R is an M-by-M upper
!> triangular matrix.
!>
so she takes your real upper trapezoidal matrix A (M-by-N, and M<=N, no exceptions bestie) and reduces it to upper triangular form using orthogonal transformations. the glow-up is real β¨
π«Ά 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 >= M.
!>
A
!> A is REAL array, dimension (LDA,N)
!> On entry, the leading M-by-N upper trapezoidal part of the
!> array A must contain the matrix to be factorized.
!> On exit, the leading M-by-M upper triangular part of A
!> contains the upper triangular matrix R, and elements M+1 to
!> N of the first M rows of A, with the array TAU, represent the
!> orthogonal matrix Z as a product of M elementary reflectors.
!>
she goes in as your trapezoidal situation and comes out holding R in the leading M-by-M upper triangular part π and the rest? elements M+1 to N of the first M rows of A, together with TAU, are out here representing the orthogonal matrix Z as a product of M elementary reflectors. main character behavior fr fr.
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
!>
TAU
!> TAU is REAL array, dimension (M)
!> The scalar factors of the elementary reflectors.
!>
WORK
!> WORK is REAL array, dimension (MAX(1,LWORK))
!> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
!>
LWORK
!> LWORK is INTEGER
!> The dimension of the array WORK. LWORK >= max(1,M).
!> For optimum performance LWORK >= M*NB, where NB is
!> the optimal blocksize.
!>
!> 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.
!>
ngl theLWORK = -1thing is a whole mood β you're not actually asking her to do the work, you're just asking her how much space she'd want. she answers inWORK(1)and XERBLA stays completely quiet about it. no drama. π
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
= 0 means successful exit, we ate and left no crumbs π₯. < 0 means INFO = -i and the i-th argument had an illegal value β someone did NOT read the constraints, and honestly? embarrassing for them π.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors: π
- A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
π Further Details: π
okay this part is the lore, stay with me:
!>
!> The N-by-N matrix Z can be computed by
!>
!> Z = Z(1)*Z(2)* ... *Z(M)
!>
!> where each N-by-N Z(k) is given by
!>
!> Z(k) = I - tau(k)*v(k)*v(k)**T
!>
!> with v(k) is the kth row vector of the M-by-N matrix
!>
!> V = ( I A(:,M+1:N) )
!>
!> I is the M-by-M identity matrix, A(:,M+1:N)
!> is the output stored in A on exit from STZRZF,
!> and tau(k) is the kth element of the array TAU.
!>
!>
so yeah, Z is just Z(1)*Z(2)* ... *Z(M), each Z(k) = I - tau(k)*v(k)*v(k)**T, with v(k) being the kth row vector of V = ( I A(:,M+1:N) ). I is the M-by-M identity matrix (yes that identity matrix π
), A(:,M+1:N) is the output stored in A on exit from STZRZF, and tau(k) is the kth element of TAU. it's giving choreography. it's giving coordinated. periodt. π
Definition at line 150 of file stzrzf.f. π
β¨ Author β¨
Generated automatically by Doxygen for LAPACK from the source code. (yes she was literally born this way, no cap π€β¨)
and that's the whole page bestie!! π«Ά this tea was served by LAPACK, Version 3.12.0, dated SRC/stzrzf.f(3) β mwah, go reduce something trapezoidal, ily, byeeee πππ¦
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms