SRC/zuncsd2by1.f(3)
π NAME π
okay so this is SRC/zuncsd2by1.f, bestie β straight from the Library Functions Manual π
β¨. It's the page for one very specific LAPACK subroutine, and yes, we're gonna get into every single argument. no cap.
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine zuncsd2by1 (jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21,
ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, rwork,
lrwork, iwork, info)
ZUNCSD2BY1 β the main character routine itself π.
π¦ Function/Subroutine Documentation π¦
πΈ subroutine zuncsd2by1 πΈ
subroutine zuncsd2by1 (character jobu1, character jobu2, character jobv1t,
integer m, integer p, integer q, complex*16, dimension(ldx11,*) x11,
integer ldx11, complex*16, dimension(ldx21,*) x21, integer ldx21, double
precision, dimension(*) theta, complex*16, dimension(ldu1,*) u1, integer
ldu1, complex*16, dimension(ldu2,*) u2, integer ldu2, complex*16,
dimension(ldv1t,*) v1t, integer ldv1t, complex*16, dimension(*) work,
integer lwork, double precision, dimension(*) rwork, integer lrwork,
integer, dimension(*) iwork, integer info)
ZUNCSD2BY1 π«Ά
π Purpose π
ZUNCSD2BY1 computes the CS decomposition of an M-by-Q matrix X with orthonormal columns that has been partitioned into a 2-by-1 block structure:
[ I1 0 0 ]
[ 0 C 0 ]
[ X11 ] [ U1 | ] [ 0 0 0 ]
X = [-----] = [---------] [----------] V1**T .
[ X21 ] [ | U2 ] [ 0 0 0 ]
[ 0 S 0 ]
[ 0 0 I2]
X11 is P-by-Q. The unitary matrices U1, U2, and V1 are P-by-P, (M-P)-by-(M-P), and Q-by-Q, respectively. C and S are R-by-R nonnegative diagonal matrices satisfying C^2 + S^2 = I, in which R = MIN(P,M-P,Q,M-Q). I1 is a K1-by-K1 identity matrix and I2 is a K2-by-K2 identity matrix, where K1 = MAX(Q+P-M,0), K2 = MAX(Q-P,0). π«
π Parameters π
JOBU1βJOBU1isCHARACTER.= 'Y': U1 is computed;- otherwise: U1 is not computed.
JOBU2βJOBU2isCHARACTER.= 'Y': U2 is computed;- otherwise: U2 is not computed.
JOBV1TβJOBV1TisCHARACTER.= 'Y': V1T is computed;- otherwise: V1T is not computed.
MβMisINTEGER. The number of rows inX.PβPisINTEGER. The number of rows inX11.0 <= P <= M.QβQisINTEGER. The number of columns inX11andX21.0 <= Q <= M.X11βX11isCOMPLEX*16array, dimension(LDX11,Q). On entry, part of the unitary matrix whose CSD is desired.LDX11βLDX11isINTEGER. The leading dimension ofX11.LDX11 >= MAX(1,P).X21βX21isCOMPLEX*16array, dimension(LDX21,Q). On entry, part of the unitary matrix whose CSD is desired.LDX21βLDX21isINTEGER. The leading dimension ofX21.LDX21 >= MAX(1,M-P).THETAβTHETAisDOUBLE PRECISIONarray, dimension(R), in whichR = MIN(P,M-P,Q,M-Q).C = DIAG( COS(THETA(1)), ... , COS(THETA(R)) )andS = DIAG( SIN(THETA(1)), ... , SIN(THETA(R)) ).U1βU1isCOMPLEX*16array, dimension(P). IfJOBU1 = 'Y',U1contains theP-by-Punitary matrixU1.LDU1βLDU1isINTEGER. The leading dimension ofU1. IfJOBU1 = 'Y',LDU1 >= MAX(1,P).U2βU2isCOMPLEX*16array, dimension(M-P). IfJOBU2 = 'Y',U2contains the(M-P)-by-(M-P)unitary matrixU2.LDU2βLDU2isINTEGER. The leading dimension ofU2. IfJOBU2 = 'Y',LDU2 >= MAX(1,M-P).V1TβV1TisCOMPLEX*16array, dimension(Q). IfJOBV1T = 'Y',V1Tcontains theQ-by-Qunitary matrixV1**T.LDV1TβLDV1TisINTEGER. The leading dimension ofV1T. IfJOBV1T = 'Y',LDV1T >= MAX(1,Q).WORKβWORKisCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. The dimension of the arrayWORK. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKandRWORKarrays, returns this value as the first entry of theWORKandRWORKarray, respectively, and no error message related toLWORKorLRWORKis issued byXERBLA.RWORKβRWORKisDOUBLE PRECISIONarray, dimension(MAX(1,LRWORK)). On exit, ifINFO = 0,RWORK(1)returns the optimalLRWORK. IfINFO > 0on exit,RWORK(2:R)contains the valuesPHI(1), ...,PHI(R-1)that, together withTHETA(1), ...,THETA(R), define the matrix in intermediate bidiagonal-block form remaining after nonconvergence.INFOspecifies the number of nonzeroPHI's.LRWORKβLRWORKisINTEGER. The dimension of the arrayRWORK. IfLRWORK=-1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKandRWORKarrays, returns this value as the first entry of theWORKandRWORKarray, respectively, and no error message related toLWORKorLRWORKis issued byXERBLA.IWORKβIWORKisINTEGERarray, dimension(M-MIN(P,M-P,Q,M-Q)).INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0:ZBBCSDdid not converge. See the description ofWORKabove for details.
π References π
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 252 of file zuncsd2by1.f.
π«Ά Author (the auto-generated one) π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
okay bye bestie π«Άπ
β the footer/version-date vibes are LAPACK Version 3.12.0, page SRC/zuncsd2by1.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