SRC/dorcsd2by1.f(3)
β¨ NAME β¨
okay so bestie, this is SRC/dorcsd2by1.f(3), page from the Library Functions Manual π. The file in the spotlight is SRC/dorcsd2by1.f, and it's literally here to explain DORCSD2BY1 β yes, the CS-decomposition bestie of your dreams π«Ά.
πΈ SYNOPSIS πΈ
Functions/Subroutines
Here's the signature, copied exactly so no cap:
subroutine dorcsd2by1 (jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21,
ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, iwork,
info)
And the routine's name is DORCSD2BY1 β¨.
π¦ Function/Subroutine Documentation π¦
π subroutine dorcsd2by1 β DORCSD2BY1 π
okay, full signature tea, exactly as written:
subroutine dorcsd2by1 (character jobu1, character jobu2, character jobv1t,
integer m, integer p, integer q, double precision, dimension(ldx11,*)
x11, integer ldx11, double precision, dimension(ldx21,*) x21, integer
ldx21, double precision, dimension(*) theta, double precision,
dimension(ldu1,*) u1, integer ldu1, double precision, dimension(ldu2,*)
u2, integer ldu2, double precision, dimension(ldv1t,*) v1t, integer
ldv1t, double precision, dimension(*) work, integer lwork, integer,
dimension(*) iwork, integer info)
DORCSD2BY1 is the main character here π.
π Purpose π
So DORCSD2BY1 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 orthogonal 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). That's the whole vibe check π
.
π Parameters π
JOBU1βJOBU1isCHARACTER.= 'Y': U1 is computed; otherwise: U1 is not computed. no pressure bestie β¨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 in X.PβPisINTEGER. The number of rows in X11.0 <= P <= M.QβQisINTEGER. The number of columns in X11 and X21.0 <= Q <= M.X11βX11isDOUBLE PRECISIONarray, dimension(LDX11,Q). On entry, part of the orthogonal matrix whose CSD is desired.LDX11βLDX11isINTEGER. The leading dimension of X11.LDX11 >= MAX(1,P).X21βX21isDOUBLE PRECISIONarray, dimension(LDX21,Q). On entry, part of the orthogonal matrix whose CSD is desired.LDX21βLDX21isINTEGER. The leading dimension of X21.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βU1isDOUBLE PRECISIONarray, dimension(P). IfJOBU1 = 'Y', U1 contains the P-by-P orthogonal matrix U1.LDU1βLDU1isINTEGER. The leading dimension of U1. IfJOBU1 = 'Y',LDU1 >= MAX(1,P).U2βU2isDOUBLE PRECISIONarray, dimension(M-P). IfJOBU2 = 'Y', U2 contains the (M-P)-by-(M-P) orthogonal matrix U2.LDU2βLDU2isINTEGER. The leading dimension of U2. IfJOBU2 = 'Y',LDU2 >= MAX(1,M-P).V1TβV1TisDOUBLE PRECISIONarray, dimension(Q). IfJOBV1T = 'Y', V1T contains the Q-by-Q matrix orthogonal matrixV1**T.LDV1TβLDV1TisINTEGER. The leading dimension of V1T. IfJOBV1T = 'Y',LDV1T >= MAX(1,Q).WORKβWORKisDOUBLE PRECISIONarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. IfINFO > 0on exit,WORK(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.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.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:DBBCSDdid not converge. See the description ofWORKabove for details.
bestie, theINFO > 0case is not a slay βDBBCSDdid not converge, and theWORKdescription above has the 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 π
Definition at line 230 of file dorcsd2by1.f.
π Author π (the auto-generated footer one)
Generated automatically by Doxygen for LAPACK from the source code.
okay bestie, final cute sign-off: this was SRC/dorcsd2by1.f(3) from the Library Functions Manual, source file SRC/dorcsd2by1.f, and LAPACK Version 3.12.0 β periodt, bye bestie ππ¦β¨
π¦ 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