ZUNMBR(3)
π NAME
okay so this is ZUNMBR(3), bestie β straight out of the Library Functions Manual. It's the LAPACK page for:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zunmbr.f
and it's giving big Fortran main-character energy. π¦
β¨ SYNOPSIS
π¦ Functions/Subroutines
subroutine ZUNMBR (vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)βZUNMBR
subroutine ZUNMBR (vect, side, trans, m, n, k, a, lda, tau, c, ldc,
work, lwork, info)
π«Ά Function/Subroutine Documentation
Here's the full signature, no cap:
subroutine ZUNMBR (character vect, 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 lwork, integer
info)
That's ZUNMBR, and she is iconic. π
πΈ Purpose
okay so if VECT = 'Q', ZUNMBR 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
And if VECT = 'P', ZUNMBR overwrites the general complex M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': P * C C * P
TRANS = 'C': P**H * C C * P**H
Here Q and P**H are the unitary matrices determined by ZGEBRD when reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q and P**H are defined as products of elementary reflectors H(i) and G(i) respectively.
Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the order of the unitary matrix Q or P**H that is applied.
If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:
- if
nq >= k,Q = H(1) H(2) . . . H(k); - if
nq < k,Q = H(1) H(2) . . . H(nq-1).
If VECT = 'P', A is assumed to have been a K-by-NQ matrix:
- if
k < nq,P = G(1) G(2) . . . G(k); - if
k >= nq,P = G(1) G(2) . . . G(nq-1).
π Parameters
VECTβVECTisCHARACTER*1.= 'Q': applyQorQ**H;= 'P': applyPorP**H.SIDEβSIDEisCHARACTER*1.= 'L': applyQ,Q**H,PorP**Hfrom the Left;= 'R': applyQ,Q**H,PorP**Hfrom the Right.TRANSβTRANSisCHARACTER*1.= 'N': No transpose, applyQorP;= 'C': Conjugate transpose, applyQ**HorP**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. IfVECT = 'Q', the number of columns in the original matrix reduced byZGEBRD. IfVECT = 'P', the number of rows in the original matrix reduced byZGEBRD.K >= 0.AβAisCOMPLEX*16array, dimension(LDA,min(nq,K))ifVECT = 'Q', or(LDA,nq)ifVECT = 'P'. The vectors which define the elementary reflectorsH(i)andG(i), whose products determine the matricesQandP, as returned byZGEBRD.LDAβLDAisINTEGER. The leading dimension of the arrayA. IfVECT = 'Q',LDA >= max(1,nq);ifVECT = 'P',LDA >= max(1,min(nq,K)).TAUβTAUisCOMPLEX*16array, dimension(min(nq,K)).TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i)which determinesQorP, as returned byZGEBRDin the array argumentTAUQorTAUP.CβCisCOMPLEX*16array, dimension(LDC,N). On entry, the M-by-N matrixC. On exit,Cis overwritten byQ*CorQ**H*CorC*Q**HorC*QorP*CorP**H*CorC*PorC*P**H.LDCβLDCisINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisCOMPLEX*16array, 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); - if
N = 0orM = 0,LWORK >= 1. - For optimum performance
LWORK >= max(1,N*NB)ifSIDE = 'L', andLWORK >= max(1,M*NB)ifSIDE = 'R', whereNBis the optimal blocksize. (NB = 0ifM = 0orN = 0.) - If
LWORK = -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.
- If
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 194 of file zunmbr.f.
π§ Author
Generated automatically by Doxygen for LAPACK from the source code.
π Cute sign-off: LAPACK Version 3.12.0, page source /home/abui...RC/zunmbr.f(3) β and the footer did not show a date, bestie, so I'm not inventing one. Periodt. π«Άβ¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms