SORCSD(3)
π SORCSD(3) π
okay so bestie, this is SORCSD(3) straight out of the LAPACK Library Functions Manual, and it's a whole recursive subroutine moment. no cap, it's giving serious orthogonal-matrix energy. β¨
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sorcsd.f
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
recursive subroutine SORCSD (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, iwork, info)
SORCSD
π¦ Function/Subroutine Documentation π¦
recursive subroutine SORCSD (character jobu1, character jobu2, character
jobv1t, character jobv2t, character trans, character signs, integer m,
integer p, integer q, real, dimension( ldx11, * ) x11, integer ldx11,
real, dimension( ldx12, * ) x12, integer ldx12, real, dimension( ldx21,
* ) x21, integer ldx21, real, dimension( ldx22,
* ) x22, integer ldx22, real, dimension( * ) theta, real, dimension(
ldu1, * ) u1, integer ldu1, real, dimension( ldu2, * ) u2, integer ldu2,
real, dimension( ldv1t, * ) v1t, integer ldv1t, real, dimension( ldv2t,
* ) v2t, integer ldv2t, real, dimension( * ) work, integer lwork,
integer, dimension( * ) iwork, integer info)
SORCSD
π Purpose π
okay so SORCSD computes the CS decomposition of an M-by-M partitioned orthogonal matrix X, and the diagram is honestly iconic:
[ I 0 0 | 0 0 0 ]
[ 0 C 0 | 0 -S 0 ]
[ X11 | X12 ] [ U1 | ] [ 0 0 0 | 0 0 -I ] [ V1 | ]**T
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 orthogonal 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': 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. π«ΆJOBV2TβJOBV2TisCHARACTER.= 'Y': V2T is computed; otherwise: V2T is not computed. π«ΆTRANSβTRANSisCHARACTER.= 'T': X, U1, U2, V1T, and V2T are stored in row-major order; otherwise: X, U1, U2, V1T, and V2T are 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 in X. πPβPisINTEGER. The number of rows in X11 and X12.0 <= P <= M. πQβQisINTEGER. The number of columns in X11 and X21.0 <= Q <= M. πX11βX11isREAL array, 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). πX12βX12isREAL array, dimension (LDX12,M-Q). On entry, part of the orthogonal matrix whose CSD is desired. πΈLDX12βLDX12isINTEGER. The leading dimension of X12.LDX12 >= MAX(1,P). πX21βX21isREAL array, dimension (LDX21,Q). On entry, part of the orthogonal matrix whose CSD is desired. πΈLDX21βLDX21isINTEGER. The leading dimension of X11.LDX21 >= MAX(1,M-P). πX22βX22isREAL array, dimension (LDX22,M-Q). On entry, part of the orthogonal matrix whose CSD is desired. πΈLDX22βLDX22isINTEGER. The leading dimension of X11.LDX22 >= MAX(1,M-P). πTHETAβTHETAisREAL array, 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βU1isREAL array, dimension (LDU1,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βU2isREAL array, dimension (LDU2,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βV1TisREAL array, dimension (LDV1T,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). πV2TβV2TisREAL array, dimension (LDV2T,M-Q). IfJOBV2T = 'Y', V2T contains the (M-Q)-by-(M-Q) orthogonal matrixV2**T. πLDV2TβLDV2TisINTEGER. The leading dimension of V2T. IfJOBV2T = 'Y',LDV2T >= MAX(1,M-Q). πWORKβWORKisREAL array, 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 nonzero PHI'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βIWORKisINTEGER array, 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:SBBCSDdid 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 295 of file sorcsd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole page, bestie π the footer energy is LAPACK Version 3.12.0 and /home/abui...RC/sorcsd.f(3). bye, go slay some orthogonal matrices π«Άβ¨
π¦ 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