CUNCSD(3)
π CUNCSD(3) β LAPACK manual π¦
okay so this is the CUNCSD(3) page from the LAPACK manual, and bestie, it's giving very specific linear-algebra main character energy. no cap, every detail is staying. π
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cuncsd.f
that's the file, fr fr. π«Ά
β¨ SYNOPSIS β¨
Functions/Subroutines
recursive subroutine CUNCSD (jobu1, jobu2, jobv1t, jobv2t, trans, signs,
m, p, q, x11, ldx11, x12, ldx12, x21, ldx21, x22, ldx22, theta, u1,
ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, work, lwork, rwork, lrwork,
iwork, info)
CUNCSD
π§ Function/Subroutine Documentation π§
π the full signature, exactly as it is π
recursive subroutine CUNCSD (character jobu1, character jobu2, character jobv1t, character jobv2t, character trans, character signs, integer m, integer p, integer q, complex, dimension( ldx11, * ) x11, integer ldx11, complex, dimension( ldx12, * ) x12, integer ldx12, complex, dimension( ldx21, * ) x21, integer ldx21, complex, dimension( ldx22, * ) x22, integer ldx22, real, dimension( * ) theta, complex, dimension( ldu1, * ) u1, integer ldu1, complex, dimension( ldu2, * ) u2, integer ldu2, complex, dimension( ldv1t, * ) v1t, integer ldv1t, complex, dimension( ldv2t, * ) v2t, integer ldv2t, complex, dimension( * ) work, integer lwork, real, dimension( * ) rwork, integer lrwork, integer, dimension( * ) iwork, integer info)
and yes, the subroutine is literally CUNCSD. π
π Purpose π
CUNCSD computes the CS decomposition of an M-by-M partitioned unitary matrix X:
[ I 0 0 | 0 0 0 ]
[ 0 C 0 | 0 -S 0 ]
[ X11 | X12 ] [ U1 | ] [ 0 0 0 | 0 0 -I ] [ V1 | ]**H
X = [-----------] = [---------] [---------------------] [---------] .
[ X21 | X22 ] [ | U2 ] [ 0 0 0 | I 0 0 ] [ | V2 ]
[ 0 S 0 | 0 C 0 ]
[ 0 0 I | 0 0 0 ]
X11 is P-by-Q. The unitary matrices U1, U2, V1, and V2 are P-by-P, (M-P)-by-(M-P), Q-by-Q, and (M-Q)-by-(M-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). slay. β¨
π«Ά Parameters π«Ά
JOBU1βJOBU1isCHARACTER.= 'Y':U1is computed; otherwise:U1is not computed.JOBU2βJOBU2isCHARACTER.= 'Y':U2is computed; otherwise:U2is not computed.JOBV1TβJOBV1TisCHARACTER.= 'Y':V1Tis computed; otherwise:V1Tis not computed.JOBV2TβJOBV2TisCHARACTER.= 'Y':V2Tis computed; otherwise:V2Tis not computed.TRANSβTRANSisCHARACTER.= 'T':X,U1,U2,V1T, andV2Tare stored in row-major order; otherwise:X,U1,U2,V1T, andV2Tare stored in column-major order.SIGNSβSIGNSisCHARACTER.= 'O': the lower-left block is made nonpositive (the convention); otherwise: the upper-right block is made nonpositive (the convention).MβMisINTEGER. The number of rows and columns inX.PβPisINTEGER. The number of rows inX11andX12.0 <= P <= M.QβQisINTEGER. The number of columns inX11andX21.0 <= Q <= M.X11βX11isCOMPLEXarray, dimension(LDX11,Q). On entry, part of the unitary matrix whose CSD is desired.LDX11βLDX11isINTEGER. The leading dimension ofX11.LDX11 >= MAX(1,P).X12βX12isCOMPLEXarray, dimension(LDX12,M-Q). On entry, part of the unitary matrix whose CSD is desired.LDX12βLDX12isINTEGER. The leading dimension ofX12.LDX12 >= MAX(1,P).X21βX21isCOMPLEXarray, dimension(LDX21,Q). On entry, part of the unitary matrix whose CSD is desired.LDX21βLDX21isINTEGER. The leading dimension ofX11.LDX21 >= MAX(1,M-P).X22βX22isCOMPLEXarray, dimension(LDX22,M-Q). On entry, part of the unitary matrix whose CSD is desired.LDX22βLDX22isINTEGER. The leading dimension ofX11.LDX22 >= MAX(1,M-P).THETAβTHETAisREALarray, 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βU1isCOMPLEXarray, dimension(LDU1,P). IfJOBU1 = 'Y',U1contains the P-by-P unitary matrixU1.LDU1βLDU1isINTEGER. The leading dimension ofU1. IfJOBU1 = 'Y',LDU1 >= MAX(1,P).U2βU2isCOMPLEXarray, dimension(LDU2,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βV1TisCOMPLEXarray, dimension(LDV1T,Q). IfJOBV1T = 'Y',V1Tcontains the Q-by-Q unitary matrixV1**H.LDV1TβLDV1TisINTEGER. The leading dimension ofV1T. IfJOBV1T = 'Y',LDV1T >= MAX(1,Q).V2TβV2TisCOMPLEXarray, dimension(LDV2T,M-Q). IfJOBV2T = 'Y',V2Tcontains the (M-Q)-by-(M-Q) unitary matrixV2**H.LDV2TβLDV2TisINTEGER. The leading dimension ofV2T. IfJOBV2T = 'Y',LDV2T >= MAX(1,M-Q).WORKβWORKisCOMPLEXarray, 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 theWORKarray, returns this value as the first entry of the work array, and no error message related toLWORKis issued byXERBLA.RWORKβRWORKisREALarray, dimensionMAX(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 theRWORKarray, returns this value as the first entry of the work array, and no error message related toLRWORKis issued byXERBLA.IWORKβIWORKisINTEGERarray, dimension(M-MIN(P,M-P,Q,M-Q)).INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0:CBBCSDdid not converge. See the description ofRWORKabove 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 314 of file cuncsd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
mwah π β signed off from LAPACK Version 3.12.0 at /home/abui...RC/cuncsd.f(3). The footer date isn't in this one, bestie, so that's the whole cute sign-off. π
π¦ 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