unmrz(3)
π¦ unmrz(3) β the {un,or}mrz glow-up
okay so bestie, you're in the Library Functions Manual section, and this page is all about the four <rainbow>unmrz</rainbow> / <rainbow>ormrz</rainbow> routines β the ones that multiply by Z from tzrzf. β¨
π NAME π
unmrz β {un,or}mrz: multiply by Z from tzrzf
π SYNOPSIS π
π«Ά Functions
subroutine cunmrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
lwork, info)
CUNMRZ
subroutine dormrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
lwork, info)
DORMRZ
subroutine sormrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
lwork, info)
SORMRZ
subroutine zunmrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
lwork, info)
ZUNMRZ
π¦ Detailed Description π¦
bestie there is literally nothing here. the detailed description section is giving empty notebook page. no cap. π the actual tea is all down in the function docs, so keep scrolling. π«Ά
π₯ Function Documentation π₯
π subroutine cunmrz
subroutine cunmrz (character side, character trans, integer m, integer n,
integer k, integer l, complex, dimension( lda, * ) a, integer lda,
complex, dimension( * ) tau, complex, dimension( ldc, * ) c, integer
ldc, complex, dimension( * ) work, integer lwork, integer info)
CUNMRZ
πΈ Purpose πΈ
okay so here's the vibe β CUNMRZ overwrites the general complex M-by-N matrix C with:
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:
Q = H(1) H(2) . . . H(k)
exactly as returned by CTZRZF. and the way Q works β it's of order M if SIDE = 'L', and of order N if SIDE = 'R'. slay. π
π Parameters π
SIDEβSIDEisCHARACTER*1.= 'L': applyQorQ**Hfrom the Left;= 'R': applyQorQ**Hfrom the Right.
TRANSβTRANSisCHARACTER*1.= 'N': no transpose, applyQ;= 'C': conjugate transpose, applyQ**H.
MβMisINTEGER. the number of rows of the matrixC.M >= 0.NβNisINTEGER. the number of columns of the matrixC.N >= 0.KβKisINTEGER. the number of elementary reflectors whose product defines the matrixQ.- if
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
- if
LβLisINTEGER. the number of columns of the matrixAcontaining the meaningful part of the Householder reflectors.- if
SIDE = 'L',M >= L >= 0, ifSIDE = 'R',N >= L >= 0.
- if
AβAisCOMPLEXarray, dimension(LDA,M)ifSIDE = 'L',(LDA,N)ifSIDE = 'R'.
the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by CTZRZF in the last k rows of its array argument A. heads up π β A is modified by the routine but restored on exit. iconic behaviour honestly.
LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,K).TAUβTAUisCOMPLEXarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byCTZRZF.CβCisCOMPLEXarray, dimension(LDC,N).- on entry, the M-by-N matrix
C. - on exit,
Cis overwritten byQ*CorQ**H*CorC*Q**HorC*Q.
- on entry, the M-by-N matrix
LDCβLDCisINTEGER. the leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisCOMPLEXarray, dimension(MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. 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. π
- if
π«Ά 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.
INFOβINFOisINTEGER.= 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 just an empty !> comment. nothing to see here bestie, moving on. π
π¦ Definition π¦
Definition at line 185 of file cunmrz.f.
π subroutine dormrz
subroutine dormrz (character side, character trans, integer m, integer n,
integer k, integer l, double precision, dimension( lda, * ) a, integer
lda, double precision, dimension( * ) tau, double precision, dimension(
ldc, * ) c, integer ldc, double precision, dimension( * ) work, integer
lwork, integer info)
DORMRZ
πΈ Purpose πΈ
same energy, real-number edition β DORMRZ overwrites the general real M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**T * C C * Q**T
where Q is a real orthogonal matrix defined as the product of k elementary reflectors:
Q = H(1) H(2) . . . H(k)
as returned by DTZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. periodt. π
π Parameters π
SIDEβSIDEisCHARACTER*1.= 'L': applyQorQ**Tfrom the Left;= 'R': applyQorQ**Tfrom the Right.
TRANSβTRANSisCHARACTER*1.= 'N': no transpose, applyQ;= 'T': transpose, applyQ**T.
MβMisINTEGER. the number of rows of the matrixC.M >= 0.NβNisINTEGER. the number of columns of the matrixC.N >= 0.KβKisINTEGER. the number of elementary reflectors whose product defines the matrixQ.- if
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
- if
LβLisINTEGER. the number of columns of the matrixAcontaining the meaningful part of the Householder reflectors.- if
SIDE = 'L',M >= L >= 0, ifSIDE = 'R',N >= L >= 0.
- if
AβAisDOUBLE PRECISIONarray, dimension(LDA,M)ifSIDE = 'L',(LDA,N)ifSIDE = 'R'.
the i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by DTZRZF in the last k rows of its array argument A. also β A is modified by the routine but restored on exit. yes bestie, same trick. β¨
LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,K).TAUβTAUisDOUBLE PRECISIONarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byDTZRZF.CβCisDOUBLE PRECISIONarray, dimension(LDC,N).- on entry, the M-by-N matrix
C. - on exit,
Cis overwritten byQ*CorQ**H*CorC*Q**HorC*Q.
- on entry, the M-by-N matrix
LDCβLDCisINTEGER. the leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisDOUBLE PRECISIONarray, dimension(MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. 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.
- if
π«Ά 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.
INFOβINFOisINTEGER.= 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: β
again β an empty !> comment and that's it. the audacity π
π¦ Definition π¦
Definition at line 185 of file dormrz.f.
π subroutine sormrz
subroutine sormrz (character side, character trans, integer m, integer n,
integer k, integer l, real, dimension( lda, * ) a, integer lda, real,
dimension( * ) tau, real, dimension( ldc, * ) c, integer ldc, real,
dimension( * ) work, integer lwork, integer info)
SORMRZ
πΈ Purpose πΈ
the single-precision sister β SORMRZ overwrites the general real M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**T * C C * Q**T
where Q is a real orthogonal matrix defined as the product of k elementary reflectors:
Q = H(1) H(2) . . . H(k)
as returned by STZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. she ate and left no crumbs. π
π Parameters π
SIDEβSIDEisCHARACTER*1.= 'L': applyQorQ**Tfrom the Left;= 'R': applyQorQ**Tfrom the Right.
TRANSβTRANSisCHARACTER*1.= 'N': no transpose, applyQ;= 'T': transpose, applyQ**T.
MβMisINTEGER. the number of rows of the matrixC.M >= 0.NβNisINTEGER. the number of columns of the matrixC.N >= 0.Kβ
okay so K is where we pick back up, and she's giving "I define the whole matrix Q" energy:
Kβ isINTEGER. The number of elementary reflectors whose product defines the matrix Q. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0. periodt.Lβ isINTEGER. The number of columns of the matrix A containing the meaningful part of the Householder reflectors. IfSIDE = 'L',M >= L >= 0, ifSIDE = 'R',N >= L >= 0. slay.Aβ isREAL array, dimension(LDA,M)ifSIDE = 'L',(LDA,N)ifSIDE = 'R'. The i-th row must contain the vector which defines the elementary reflector H(i), fori = 1,2,...,k, as returned bySTZRZFin the last k rows of its array argument A. A is modified by the routine but restored on exit. bestie, she changes and then puts it back β iconic behavior.LDAβ isINTEGER. The leading dimension of the array A.LDA >= max(1,K). no cap.TAUβ isREAL array, dimension(K).TAU(i)must contain the scalar factor of the elementary reflector H(i), as returned bySTZRZF. she's the hidden ingredient fr fr.Cβ isREAL array, dimension(LDC,N). On entry, the M-by-N matrix C. On exit, C is overwritten byQ*CorQ**H*CorC*Q**HorC*Q. the way that C gets a whole new look πLDCβ isINTEGER. The leading dimension of the array C.LDC >= max(1,M). yes bestie, respect the leading dimension.WORKβ isREAL array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimal LWORK. she's the workspace baddie.LWORKβ isINTEGER. The dimension of the array WORK. IfSIDE = 'L',LWORK >= max(1,N); ifSIDE = 'R',LWORK >= max(1,M). For good performance, LWORK should generally be larger.
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. lowkey a little diva move, but valid.
INFOβ isINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value. red flag on the argument, bestie.
π 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: π§
the section is literally just !> β no extra lore, no hidden tea, no cap.
Definition at line 185 of file sormrz.f.
π¦ subroutine zunmrz π¦
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 π
main character energy, complex edition.
π― Purpose π―
okay so ZUNMRZ overwrites the general complex M-by-N matrix C with:
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:
Q = H(1) H(2) . . . H(k)
as returned by ZTZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. she's built from reflectors and she's ready to transform your matrix, periodt.
π Parameters π
SIDEβ isCHARACTER*1.= 'L': apply Q orQ**Hfrom the Left;= 'R': apply Q orQ**Hfrom the Right. pick a side, bestie.TRANSβ isCHARACTER*1.= 'N': No transpose, apply Q;= 'C': Conjugate transpose, applyQ**H. no in-between.Mβ isINTEGER. The number of rows of the matrix C.M >= 0. rows are valid.Nβ isINTEGER. The number of columns of the matrix C.N >= 0. columns are valid too.Kβ isINTEGER. The number of elementary reflectors whose product defines the matrix Q. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0. same queen, complex era.Lβ isINTEGER. The number of columns of the matrix A containing the meaningful part of the Householder reflectors. IfSIDE = 'L',M >= L >= 0, ifSIDE = 'R',N >= L >= 0. meaningful part only, we don't do filler.Aβ isCOMPLEX*16 array, dimension(LDA,M)ifSIDE = 'L',(LDA,N)ifSIDE = 'R'. The i-th row must contain the vector which defines the elementary reflector H(i), fori = 1,2,...,k, as returned byZTZRZFin the last k rows of its array argument A. A is modified by the routine but restored on exit. she's a temporary girlypop, she comes back.LDAβ isINTEGER. The leading dimension of the array A.LDA >= max(1,K). respect it.TAUβ isCOMPLEX*16 array, dimension(K).TAU(i)must contain the scalar factor of the elementary reflector H(i), as returned byZTZRZF. the scalar factor is doing so much work rn.Cβ isCOMPLEX*16 array, dimension(LDC,N). On entry, the M-by-N matrix C. On exit, C is overwritten byQ*CorQ**H*CorC*Q**HorC*Q. she gets a whole new outfit, no returns.LDCβ isINTEGER. The leading dimension of the array C.LDC >= max(1,M). leading dimension stays booked and busy.WORKβ isCOMPLEX*16 array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimal LWORK. workspace queen.LWORKβ isINTEGER. The dimension of the array WORK. IfSIDE = 'L',LWORK >= max(1,N); ifSIDE = 'R',LWORK >= max(1,M). For good performance, LWORK should generally be larger.
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. yes bestie, the -1 is a whole query moment, not a crash.
INFOβ isINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value. if this hits, one of your arguments is not passing the vibe check.
π 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: π§
again, the section is just !> β literally no extra details, just vibes and a comment marker.
Definition at line 185 of file zunmrz.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. π
and that's the whole tea: this iconic page is from LAPACK Version 3.12.0, and you're reading unmrz(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