unml2(3)
okay bestie, welcome to unml2(3) β straight from the Library Functions Manual and honestly it's giving "the LQ glow-up nobody told you about" π
this is the level-2 (unblocked) step in unmlq, and it's literally four subroutines doing the same gorgeous thing in four different flavours. buckle up π
β¨ NAME β¨
unml2 β {un,or}ml2: multiply by Q, level 2, step in unmlq π¦
πΈ SYNOPSIS πΈ
π«Ά Functions
subroutine cunml2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)β CUNML2 multiplies a general matrix by the unitary matrix from a LQ factorization determined bycgelqf(unblocked algorithm). πsubroutine dorml2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)β DORML2 multiplies a general matrix by the orthogonal matrix from a LQ factorization determined bysgelqf(unblocked algorithm). no cap, it really does saysgelqfin there πsubroutine sorml2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)β SORML2 multiplies a general matrix by the orthogonal matrix from a LQ factorization determined bysgelqf(unblocked algorithm). πsubroutine zunml2 (side, trans, m, n, k, a, lda, tau, c, ldc, work, info)β ZUNML2 multiplies a general matrix by the unitary matrix from a LQ factorization determined bycgelqf(unblocked algorithm). β¨
π₯ Detailed Description π₯
Function Documentation β yes, that's the whole section title, we're getting into the good part now.
π§ Function Documentation π§
π subroutine cunml2
subroutine cunml2 (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)
CUNML2 multiplies a general matrix by the unitary matrix from a LQ factorization determined by cgelqf (unblocked algorithm). π¦
β Purpose
okay so CUNML2 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(k)**H . . . H(2)**H H(1)**H
as returned by CGELQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'. periodt. π
π Parameters
SIDEβ isCHARACTER*1= 'L': apply Q or Q**H from the Left= 'R': apply Q or Q**H from the Right
TRANSβ isCHARACTER*1= 'N': apply Q (No transpose)= 'C': apply Q**H (Conjugate transpose)
Mβ isINTEGER- The number of rows of the matrix C.
M >= 0.
- The number of rows of the matrix C.
Nβ isINTEGER- The number of columns of the matrix C.
N >= 0.
- The number of columns of the matrix C.
Kβ isINTEGER- The number of elementary reflectors whose product defines the matrix Q.
- If
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
Aβ isCOMPLEXarray, 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 by CGELQF in the firstkrows of its array argument A. - A is modified by the routine but restored on exit. π«Ά (we give it back, promise)
LDAβ isINTEGER- The leading dimension of the array A.
LDA >= max(1,K).
- The leading dimension of the array A.
TAUβ isCOMPLEXarray, dimension(K)TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned by CGELQF.
Cβ isCOMPLEXarray, dimension(LDC,N)- On entry, the
m-by-nmatrix C. - On exit, C is overwritten by
Q*CorQ**H*CorC*Q**HorC*Q.
- On entry, the
LDCβ isINTEGER- The leading dimension of the array C.
LDC >= max(1,M).
- The leading dimension of the array C.
WORKβ isCOMPLEXarray, dimension(N)ifSIDE = 'L',(M)ifSIDE = 'R'
INFOβ isINTEGER= 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 cunml2.f.
π subroutine dorml2
subroutine dorml2 (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)
DORML2 multiplies a general matrix by the orthogonal matrix from a LQ factorization determined by sgelqf (unblocked algorithm). πΈ
β Purpose
DORML2 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(k) . . . H(2) H(1)
as returned by DGELQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'. iconic. π
π Parameters
SIDEβ isCHARACTER*1= 'L': apply Q or Q**T from the Left= 'R': apply Q or Q**T from the Right
TRANSβ isCHARACTER*1= 'N': apply Q (No transpose)= 'T': apply Q**T (Transpose)
Mβ isINTEGER- The number of rows of the matrix C.
M >= 0.
- The number of rows of the matrix C.
Nβ isINTEGER- The number of columns of the matrix C.
N >= 0.
- The number of columns of the matrix C.
Kβ isINTEGER- The number of elementary reflectors whose product defines the matrix Q.
- If
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
Aβ isDOUBLE 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), fori = 1,2,...,k, as returned by DGELQF in the firstkrows of its array argument A.
LDAβ isINTEGER- The leading dimension of the array A.
LDA >= max(1,K).
- The leading dimension of the array A.
TAUβ isDOUBLE PRECISIONarray, dimension(K)TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned by DGELQF.
Cβ isDOUBLE PRECISIONarray, dimension(LDC,N)- On entry, the
mbynmatrix C. - On exit, C is overwritten by
Q*CorQ**T*CorC*Q**TorC*Q.
- On entry, the
LDCβ isINTEGER- The leading dimension of the array C.
LDC >= max(1,M).
- The leading dimension of the array C.
WORKβ isDOUBLE PRECISIONarray, dimension(N)ifSIDE = 'L',(M)ifSIDE = 'R'
INFOβ isINTEGER= 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 156 of file dorml2.f.
π¦ subroutine sorml2
subroutine sorml2 (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)
SORML2 multiplies a general matrix by the orthogonal matrix from a LQ factorization determined by sgelqf (unblocked algorithm). β¨
β Purpose
SORML2 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(k) . . . H(2) H(1)
as returned by SGELQF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'. highkey obsessed. π
π Parameters
SIDEβ isCHARACTER*1= 'L': apply Q or Q**T from the Left= 'R': apply Q or Q**T from the Right
TRANSβ isCHARACTER*1= 'N': apply Q (No transpose)= 'T': apply Q**T (Transpose)
Mβ isINTEGER- The number of rows of the matrix C.
M >= 0.
- The number of rows of the matrix C.
Nβ isINTEGER- The number of columns of the matrix C.
N >= 0.
- The number of columns of the matrix C.
Kβ isINTEGER- The number of elementary reflectors whose product defines the matrix Q.
- If
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
Aβ isREALarray, 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 by SGELQF in the firstkrows of its array argument A. - A is modified by the routine but restored on exit. π«Ά
LDAβ isINTEGER- The leading dimension of the array A.
LDA >= max(1,K).
- The leading dimension of the array A.
TAUTAUβTAUisREALarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned bySGELQF. πCβCisREALarray, dimension(LDC,N). On entry, thembynmatrixC. 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, thei-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 sorml2.f.
π subroutine zunml2 π
subroutine zunml2 (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)
ZUNML2 multiplies a general matrix by the unitary matrix from the LQ factorization determined by cgelqf (unblocked algorithm). π¦
β¨ Purpose β¨
ZUNML2 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(k)**H . . . H(2)**H H(1)**H
as returned by ZGELQF. 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'. Thei-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byZGELQFin the firstkrows 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 byZGELQF. πCβCisCOMPLEX*16array, dimension(LDC,N). On entry, them-by-nmatrixC. 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, thei-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 zunml2.f.
π«Ά Author π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
okay bestie, thatβs the whole page β footer says LAPACK Version 3.12.0 and this is unml2(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