SRC/zungrq.f(3)
π SRC/zungrq.f(3) β like, the whole page, bestie
Okay so this is a page from the Library Functions Manual and it's literally all about SRC/zungrq.f, no cap. Buckle up, this one is a whole vibe. π¦
β¨ SYNOPSIS β¨
π Functions/Subroutines
subroutine zungrq (m, n, k, a, lda, tau, work, lwork, info)β the one and only,ZUNGRQitself, main character energy π
πΈ Function/Subroutine Documentation πΈ
π«Ά subroutine zungrq (integer m, integer n, integer k, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * ) work, integer lwork, integer info)
ZUNGRQ β yes, that's her name, say it with your chest π
π Purpose:
!>
!> ZUNGRQ generates an M-by-N complex matrix Q with orthonormal rows,
!> which is defined as the last M rows of a product of K elementary
!> reflectors of order N
!>
!> Q = H(1)**H H(2)**H . . . H(k)**H
!>
!> as returned by ZGERQF.
!>
So basically she builds you a matrix Q β M-by-N, complex, with orthonormal rows β and that Q is the last M rows of this whole product of K elementary reflectors of order N. The formula is the moment, honestly:
Q = H(1)**H H(2)**H . . . H(k)**H
and it's the exact same thing ZGERQF hands back to you. Slay. π₯
π Parameters (aka the whole friend group)
MβM is INTEGER, and it's the number of rows of the matrixQ. Constraint era:M >= 0β¨NβN is INTEGER, the number of columns of the matrixQ. And heads up,N >= M, always, no exceptions πKβK is INTEGER, the number of elementary reflectors whose product defines the matrixQ. Constraint:M >= K >= 0π«ΆAβA is COMPLEX*16 array, dimension (LDA,N). Okay so on entry π the(m-k+i)-th row has got to contain the vector that defines the elementary reflectorH(i), fori = 1,2,...,k, exactly asZGERQFreturned it in the last k rows of its array argumentA. On exit? Boom, it's the M-by-N matrixQ. Glow-up πLDAβLDA is INTEGER, the first dimension of the arrayA. Rule:LDA >= max(1,M), don't test her πTAUβTAU is COMPLEX*16 array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byZGERQF. Iconic, as usual β¨WORKβWORK is COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0, thenWORK(1)returns the optimalLWORK. Bestie is out here doing double duty π¦LWORKβLWORK is INTEGER, the dimension of the arrayWORK. You needLWORK >= max(1,M). For optimum performance though,LWORK >= M*NB, whereNBis the optimal blocksize β treat yourself, go big π
Fr fr though: ifLWORK = -1, then a workspace query is assumed. The routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. It's giving "just checking, not committing" π
INFOβINFO is INTEGER:= 0: successful exit π< 0: ifINFO = -i, the i-th argument has an illegal value π (rude, but fair)
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Legends, all of them. Periodt. π
π§ Definition
Definition at line 127 of file zungrq.f. β that's where she lives, go visit π
β Author (the meta one)
Generated automatically by Doxygen for LAPACK from the source code. β yes bestie, a robot wrote this page, and it ate π
β¨
LAPACK, Version 3.12.0, SRC/zungrq.f(3) β that's the whole vibe check, mwah, see you in the next manpage ππ
π¦ 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