CUNCSD2BY1(3)
π CUNCSD2BY1(3) β Library Functions Manual π
πΈ NAME πΈ
okay bestie, this is the manual page for CUNCSD2BY1, and the source file path is literally:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cuncsd2by1.f
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine CUNCSD2BY1 (jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21, ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, rwork, lrwork, iwork, info)
CUNCSD2BY1
π«Ά Function/Subroutine Documentation π«Ά
subroutine CUNCSD2BY1 (character jobu1, character jobu2, character jobv1t, integer m, integer p, integer q, complex, dimension(ldx11,*) x11, integer ldx11, complex, dimension(ldx21,*) x21, integer ldx21, real, dimension(*) theta, complex, dimension(ldu1,*) u1, integer ldu1, complex, dimension(ldu2,*) u2, integer ldu2, complex, dimension(ldv1t,*) v1t, integer ldv1t, complex, dimension(*) work, integer lwork, real, dimension(*) rwork, integer lrwork, integer, dimension(*) iwork, integer info)
CUNCSD2BY1
Purpose
okay so CUNCSD2BY1 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. it's giving very structured, very demure π
:
[ 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). no cap, that's the whole vibe β¨.
Parameters
JOBU1isCHARACTER. IfJOBU1 = 'Y', thenU1is computed; otherwiseU1is not computed. πJOBU2isCHARACTER. IfJOBU2 = 'Y', thenU2is computed; otherwiseU2is not computed. πJOBV1TisCHARACTER. IfJOBV1T = 'Y', thenV1Tis computed; otherwiseV1Tis not computed. πMisINTEGER. It's the number of rows inX. πPisINTEGER. It's the number of rows inX11.0 <= P <= M. πQisINTEGER. It's the number of columns inX11andX21.0 <= Q <= M. πX11isCOMPLEX array, dimension (LDX11,Q). On entry, it's part of the unitary matrix whose CSD is desired. π¦LDX11isINTEGER. It's the leading dimension ofX11.LDX11 >= MAX(1,P). πΈX21isCOMPLEX array, dimension (LDX21,Q). On entry, it's part of the unitary matrix whose CSD is desired. π¦LDX21isINTEGER. It's the leading dimension ofX21.LDX21 >= MAX(1,M-P). πΈTHETAisREAL array, dimension (R), in whichR = MIN(P,M-P,Q,M-Q). And bestie, the math is:C = DIAG( COS(THETA(1)), ... , COS(THETA(R)) )andS = DIAG( SIN(THETA(1)), ... , SIN(THETA(R)) ). π math ate.U1isCOMPLEX array, dimension (P). IfJOBU1 = 'Y',U1contains the P-by-P unitary matrixU1. πLDU1isINTEGER. It's the leading dimension ofU1. IfJOBU1 = 'Y', thenLDU1 >= MAX(1,P). πU2isCOMPLEX array, dimension (M-P). IfJOBU2 = 'Y',U2contains the (M-P)-by-(M-P) unitary matrixU2. πLDU2isINTEGER. It's the leading dimension ofU2. IfJOBU2 = 'Y', thenLDU2 >= MAX(1,M-P). πV1TisCOMPLEX array, dimension (Q). IfJOBV1T = 'Y',V1Tcontains the Q-by-Q matrix unitary matrixV1**T. π¦LDV1TisINTEGER. It's the leading dimension ofV1T. IfJOBV1T = 'Y', thenLDV1T >= MAX(1,Q). π¦WORKisCOMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. βLWORKisINTEGER. It's 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. π₯RWORKisREAL array, 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. π this part is lowkey intense.LRWORKisINTEGER. It's 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. π₯IWORKisINTEGER array, dimension (M-MIN(P,M-P,Q,M-Q)). π§INFOisINTEGER.= 0: successful exit. slay.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0:CBBCSDdid 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 253 of file cuncsd2by1.f. π
Author
Generated automatically by Doxygen for LAPACK from the source code. π€β¨
later bestie! π this page signs off with LAPACK Version 3.12.0 and /home/abui...uncsd2by1.f(3) from the footer. ππ
π¦ 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