unmr2(3)
πΈ unmr2(3) β from the Library Functions Manual πΈ
okay so bestie. you found it. this is the page for unmr2(3), aka the whole {un,or}mr2 family β and yes the name in the wild is literally unmr2 - {un,or}mr2: step in unmrq. it's giving "one letter changes everything" and honestly? iconic. π
here's the tea: this is a family page. four separate Fortran subroutines live here, all doing the same little dance but with different number types. don't panic. we're gonna go through every single one. π«Ά
β¨ NAME β¨
unmr2 β {un,or}mr2: step in unmrq
that's it. that's the name section. short, sweet, mysterious. iykyk. π
π SYNOPSIS π
π Functions
cunmr2βsubroutine cunmr2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)βCUNMR2multiplies a general matrix by the unitary matrix from a RQ factorization determined bycgerqf(unblocked algorithm).dormr2βsubroutine dormr2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)βDORMR2multiplies a general matrix by the orthogonal matrix from a RQ factorization determined bysgerqf(unblocked algorithm).sormr2βsubroutine sormr2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)βSORMR2multiplies a general matrix by the orthogonal matrix from a RQ factorization determined bysgerqf(unblocked algorithm).zunmr2βsubroutine zunmr2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)βZUNMR2multiplies a general matrix by the unitary matrix from a RQ factorization determined bycgerqf(unblocked algorithm).
ok so real talk:dormr2's one-liner points atsgerqfandzunmr2's points atcgerqf. that's literally what the page says. i'm not fixing it. i don't make the rules. π
π¦ Detailed Description π¦
(this page is mostly a container. the real content is down in Function Documentation. keep scrolling bestie. β)
π Function Documentation π
π cunmr2 β the complex one
subroutine cunmr2 (character side, character trans, integer m, integer n,
integer k, complex, dimension( lda, * ) a, integer lda, complex,
dimension( * ) tau, complex, dimension( ldc, * ) c, integer ldc,
complex, dimension( * ) work, integer info)
CUNMR2 multiplies a general matrix by the unitary matrix from a RQ factorization determined by cgerqf (unblocked algorithm).
β¨ Purpose
ok so listen. CUNMR2 overwrites the general complex m-by-n matrix C with:
Q * C if SIDE = 'L' and TRANS = 'N', or
Q**H* C if SIDE = 'L' and TRANS = 'C', or
C * Q if SIDE = 'R' and TRANS = 'N', or
C * Q**H if SIDE = 'R' and TRANS = 'C',
where Q is a complex unitary matrix defined as the product of k elementary reflectors
Q = H(1)**H H(2)**H . . . H(k)**H
as returned by CGERQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'. periodt. π
π Parameters
SIDEβSIDE is CHARACTER*1= 'L': applyQorQ**Hfrom the Left= 'R': applyQorQ**Hfrom the Right
TRANSβTRANS is CHARACTER*1= 'N': applyQ(No transpose)= 'C': applyQ**H(Conjugate transpose)
MβM is INTEGERβ the number of rows of the matrixC.M >= 0.NβN is INTEGERβ the number of columns of the matrixC.N >= 0.KβK is INTEGERβ the number of elementary reflectors whose product defines the matrixQ. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.AβAis aCOMPLEXarray, dimension:
A is COMPLEX array, 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 CGERQF in the last k rows of its array argument A. π₯ heads up: A is modified by the routine but restored on exit.
LDAβLDA is INTEGERβ the leading dimension of the arrayA.LDA >= max(1,K).TAUβTAU is COMPLEX array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byCGERQF.CβC is COMPLEX array, dimension (LDC,N). On entry, the m-by-n matrixC. On exit,Cis overwritten byQ*CorQ**H*CorC*Q**HorC*Q.LDCβLDC is INTEGERβ the leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKis aCOMPLEXarray, dimension:
WORK is COMPLEX array, dimension
(N) if SIDE = 'L',
(M) if SIDE = 'R'
INFOβINFO is 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.
Definition at line 157 of file cunmr2.f.
π dormr2 β the double precision one
subroutine dormr2 (character side, character trans, integer m, integer n,
integer k, double precision, dimension( lda, * ) a, integer lda, double
precision, dimension( * ) tau, double precision, dimension( ldc, * ) c,
integer ldc, double precision, dimension( * ) work, integer info)
DORMR2 multiplies a general matrix by the orthogonal matrix from a RQ factorization determined by sgerqf (unblocked algorithm).
β¨ Purpose
same energy, real numbers this time. DORMR2 overwrites the general real m by n matrix C with:
Q * C if SIDE = 'L' and TRANS = 'N', or
Q**T* C if SIDE = 'L' and TRANS = 'T', or
C * Q if SIDE = 'R' and TRANS = 'N', or
C * Q**T if SIDE = 'R' and TRANS = '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 DGERQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.
π Parameters
SIDEβSIDE is CHARACTER*1= 'L': applyQorQ**Tfrom the Left= 'R': applyQorQ**Tfrom the Right
TRANSβTRANS is CHARACTER*1= 'N': applyQ(No transpose)= 'T': applyQ'(Transpose)
MβM is INTEGERβ the number of rows of the matrixC.M >= 0.NβN is INTEGERβ the number of columns of the matrixC.N >= 0.KβK is INTEGERβ the number of elementary reflectors whose product defines the matrixQ. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.AβAis aDOUBLE PRECISIONarray, dimension:
A is DOUBLE PRECISION array, 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 DGERQF in the last k rows of its array argument A. also: A is modified by the routine but restored on exit. π
LDAβLDA is INTEGERβ the leading dimension of the arrayA.LDA >= max(1,K).TAUβTAU is DOUBLE PRECISION array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byDGERQF.CβC is DOUBLE PRECISION array, dimension (LDC,N). On entry, the m by n matrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q.LDCβLDC is INTEGERβ the leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKis aDOUBLE PRECISIONarray, dimension:
WORK is DOUBLE PRECISION array, dimension
(N) if SIDE = 'L',
(M) if SIDE = 'R'
INFOβINFO is 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.
Definition at line 157 of file dormr2.f.
πΈ sormr2 β the single precision one
subroutine sormr2 (character side, character trans, integer m, integer n,
integer k, real, dimension( lda, * ) a, integer lda, real, dimension( *
) tau, real, dimension( ldc, * ) c, integer ldc, real, dimension( * )
work, integer info)
SORMR2 multiplies a general matrix by the orthogonal matrix from a RQ factorization determined by sgerqf (unblocked algorithm).
β¨ Purpose
bestie this is the REAL twin of DORMR2. SORMR2 overwrites the general real m by n matrix C with:
Q * C if SIDE = 'L' and TRANS = 'N', or
Q**T* C if SIDE = 'L' and TRANS = 'T', or
C * Q if SIDE = 'R' and TRANS = 'N', or
C * Q**T if SIDE = 'R' and TRANS = '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 SGERQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.
π Parameters
SIDEβSIDE is CHARACTER*1= 'L': applyQorQ**Tfrom the Left= 'R': applyQorQ**Tfrom the Right
TRANSβTRANS is CHARACTER*1= 'N': applyQ(No transpose)= 'T': applyQ'(Transpose)
MβM is INTEGERβ the number of rows of the matrixC.M >= 0.NβN is INTEGERβ the number of columns of the matrixC.N >= 0.KβK is INTEGERβ the number of elementary reflectors whose product defines the matrixQ. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.AβAis aREALarray, dimension:
A is REAL array, 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 SGERQF in the last k rows of its array argument A. (and yeah β A is modified by the routine but restored on exit π)
LDAβLDA is INTEGERβ the leading dimension of the arrayA.LDA >= max(1,K).TAUβ β¦TAUβTAUisREALarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned bySGERQF.CβCisREALarray, dimension(LDC,N). On entry, the m by n matrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q.LDCβLDCisINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisREALarray, dimension(N)ifSIDE = 'L',(M)ifSIDE = 'R'.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..
Definition at line 157 of file sormr2.f.
zunmr2 β the COMPLEX*16 unitary RQ era π
The signature, exactly:
subroutine zunmr2 (character side, character trans, integer m, integer n,
integer k, complex*16, dimension( lda, * ) a, integer lda, complex*16,
dimension( * ) tau, complex*16, dimension( ldc, * ) c, integer ldc,
complex*16, dimension( * ) work, integer info)
The official one-liner is: ZUNMR2 multiplies a general matrix by the unitary matrix from an RQ factorization determined by cgerqf (unblocked algorithm).
Purpose π―
ZUNMR2 overwrites the general complex m-by-n matrix C with:
Q * C if SIDE = 'L' and TRANS = 'N', or
Q**H* C if SIDE = 'L' and TRANS = 'C', or
C * Q if SIDE = 'R' and TRANS = 'N', or
C * Q**H if SIDE = 'R' and TRANS = 'C',
where Q is a complex unitary matrix defined as the product of k elementary reflectors:
Q = H(1)**H H(2)**H . . . H(k)**H
as returned by ZGERQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.
Parameters β¨
SIDEβSIDEisCHARACTER*1.= 'L': applyQorQ**Hfrom the Left.= 'R': applyQorQ**Hfrom the Right.TRANSβTRANSisCHARACTER*1.= 'N': applyQ(No transpose).= 'C': applyQ**H(Conjugate transpose).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. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.AβAisCOMPLEX*16array, dimension(LDA,M)ifSIDE = 'L',(LDA,N)ifSIDE = 'R'. The i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byZGERQFin the lastkrows of its array argumentA.Ais modified by the routine but restored on exit.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,K).TAUβTAUisCOMPLEX*16array, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byZGERQF.CβCisCOMPLEX*16array, dimension(LDC,N). On entry, the m-by-n matrixC. On exit,Cis overwritten byQ*CorQ**H*CorC*Q**HorC*Q.LDCβLDCisINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisCOMPLEX*16array, dimension(N)ifSIDE = 'L',(M)ifSIDE = 'R'.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.
Definition at line 157 of file zunmr2.f.
Author π€
Generated automatically by Doxygen for LAPACK from the source code.
Ok that's the whole page, bestie π β footer tea: LAPACK, version 3.12.0, page unmr2(3). No date on the line, so I'm not making one up, periodt. Bye! π¦
π¦ 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