SRC/zunmrz.f(3)
π SRC/zunmrz.f β like, the ZUNMRZ page, but make it make sense
okay so bestie, this is SRC/zunmrz.f from the LAPACK Library Functions Manual, and no cap, it's a whole vibe once you get past the Fortran. Sit down, grab a strawberry π, and let's get into it.
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine zunmrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work, lwork, info)β like, the whole entire thing. that's her. that's ZUNMRZ.
π¦ Function/Subroutine Documentation π¦
subroutine zunmrz (character side, character trans, integer m, integer n, integer k, integer l, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau, complex*16, dimension( ldc, * ) c, integer ldc, complex*16, dimension( * ) work, integer lwork, integer info)
ZUNMRZ β the main character, honestly. π
πΈ Purpose:
okay so picture this, bestie. ZUNMRZ overwrites the general complex M-by-N matrix C with, and I'm gonna show you the table because the table ate:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'C': Q**H * C C * Q**H
where Q is a complex unitary matrix defined as the product of k elementary reflectors β like a little squad of them, fr fr:
Q = H(1) H(2) . . . H(k)
as returned by ZTZRZF. and here's the part you gotta remember: Q is of order M if SIDE = 'L', and of order N if SIDE = 'R'. iykyk π«
π Parameters π
SIDEβ this one isCHARACTER*1, and it's literally just "which side are we applying from":= 'L': applyQorQ**Hfrom the Left;= 'R': applyQorQ**Hfrom the Right.
TRANSβ alsoCHARACTER*1, and it's giving "are we transposing or not":= 'N': No transpose, applyQ;= 'C': Conjugate transpose, applyQ**H.
MβINTEGER. The number of rows of the matrixC. Constraint:M >= 0. (yes she can be zero, no she will not be dramatic about it)NβINTEGER. The number of columns of the matrixC. Constraint:N >= 0.KβINTEGER. The number of elementary reflectors whose product defines the matrixQ. And the vibes are:- If
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
- If
LβINTEGER. The number of columns of the matrixAcontaining the meaningful part of the Householder reflectors. So: ifSIDE = 'L',M >= L >= 0; ifSIDE = 'R',N >= L >= 0.AβCOMPLEX*16array, dimension
(LDA,M) if SIDE = 'L',
(LDA,N) if SIDE = 'R'
The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by ZTZRZF in the last k rows of its array argument A. important: A is modified by the routine but restored on exit. so she plays with it and then puts it back, we love a considerate icon π«Ά
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,K).TAUβCOMPLEX*16array, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byZTZRZF.CβCOMPLEX*16array, dimension(LDC,N). On entry, the M-by-N matrixC. On exit,Cis overwritten byQ*CorQ**H*CorC*Q**HorC*Q. she's not coming back the same, periodt.LDCβINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. (she tells you the optimal size as a little treat β¨)LWORKβINTEGER. The dimension of the arrayWORK.- If
SIDE = 'L',LWORK >= max(1,N); - if
SIDE = 'R',LWORK >= max(1,M). - For good performance,
LWORKshould generally be larger. (bigger is better, no notes π )
- If
π¨ okay this bit matters: 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. so don't come for her aboutLWORKwhen you literally asked for a query, bestie.
INFOβINTEGER:= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value π
π 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:
literally nothing else here. the section exists, the section is empty, and honestly? she's an icon for that. (the original has an empty !> block, so we're honoring it exactly β no invented lore, ngl)
π₯ Definition at line 185 of file zunmrz.f.
π Author (the other one)
Generated automatically by Doxygen for LAPACK from the source code. (yes, a robot wrote the paperwork. she still ate.)
k bye bestie, go apply that unitary matrix π
LAPACK β Version 3.12.0 β SRC/zunmrz.f(3) πΈπ¦β¨
π¦ 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