SRC/cbbcsd.f(3)
π SRC/cbbcsd.f(3) π
okay bestie, gather round π«Ά this is the <pink>Library Functions Manual</pink> page for SRC/cbbcsd.f, and it's literally the docs for CBBCSD, a LAPACK subroutine that computes the CS decomposition of a unitary matrix in bidiagonal-block form. It's giving big math-girl main character energy, so let's go parameter by parameter, no cap π
.
π NAME π
SRC/cbbcsd.f β the CBBCSD subroutine page, periodt.
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine cbbcsd (jobu1, jobu2, jobv1t, jobv2t, trans, m, p, q, theta, phi, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, b11d, b11e, b12d, b12e, b21d, b21e, b22d, b22e, rwork, lrwork, info)
CBBCSD
πΈ Function/Subroutine Documentation πΈ
subroutine cbbcsd (character jobu1, character jobu2, character jobv1t, character jobv2t, character trans, integer m, integer p, integer q, real, dimension( * ) theta, real, dimension( * ) phi, complex, dimension( ldu1, * ) u1, integer ldu1, complex, dimension( ldu2, * ) u2, integer ldu2, complex, dimension( ldv1t, * ) v1t, integer ldv1t, complex, dimension( ldv2t, * ) v2t, integer ldv2t, real, dimension( * ) b11d, real, dimension( * ) b11e, real, dimension( * ) b12d, real, dimension( * ) b12e, real, dimension( * ) b21d, real, dimension( * ) b21e, real, dimension( * ) b22d, real, dimension( * ) b22e, real, dimension( * ) rwork, integer lrwork, integer info)
CBBCSD
π Purpose π
CBBCSD computes the CS decomposition of a unitary matrix in bidiagonal-block form. The whole setup is:
[ B11 | B12 0 0 ]
[ 0 | 0 -I 0 ]
X = [----------------]
[ B21 | B22 0 0 ]
[ 0 | 0 0 I ]
[ C | -S 0 0 ]
[ U1 | ] [ 0 | 0 -I 0 ] [ V1 | ]**H
= [---------] [---------------] [---------] .
[ | U2 ] [ S | C 0 0 ] [ | V2 ]
[ 0 | 0 0 I ]
X is M-by-M, its top-left block is P-by-Q, and Q must be no larger than P, M-P, or M-Q. If Q is not the smallest index, then X must be transposed and/or permuted. This can be done in constant time using the TRANS and SIGNS options. See CUNCSD for details.
The bidiagonal matrices B11, B12, B21, and B22 are represented implicitly by angles THETA(1:Q) and PHI(1:Q-1).
The unitary matrices U1, U2, V1T, and V2T are input/output. The input matrices are pre- or post-multiplied by the appropriate singular vector matrices.
π Parameters π
JOBU1βJOBU1isCHARACTER= 'Y':U1is updated;- otherwise:
U1is not updated.
JOBU2βJOBU2isCHARACTER= 'Y':U2is updated;- otherwise:
U2is not updated.
JOBV1TβJOBV1TisCHARACTER= 'Y':V1Tis updated;- otherwise:
V1Tis not updated.
JOBV2TβJOBV2TisCHARACTER= 'Y':V2Tis updated;- otherwise:
V2Tis not updated.
TRANSβTRANSisCHARACTER= 'T':X,U1,U2,V1T, andV2Tare stored in row-major order;- otherwise:
X,U1,U2,V1T, andV2Tare stored in column-major order.
MβMisINTEGER. The number of rows and columns inX, the unitary matrix in bidiagonal-block form.PβPisINTEGER. The number of rows in the top-left block ofX.0 <= P <= M.QβQisINTEGER. The number of columns in the top-left block ofX.0 <= Q <= MIN(P,M-P,M-Q).THETAβTHETAisREAL array, dimension (Q). On entry, the anglesTHETA(1),...,THETA(Q)that, along withPHI(1), ...,PHI(Q-1), define the matrix in bidiagonal-block form. On exit, the angles whose cosines and sines define the diagonal blocks in the CS decomposition.PHIβPHIisREAL array, dimension (Q-1). The anglesPHI(1),...,PHI(Q-1)that, along withTHETA(1),...,THETA(Q), define the matrix in bidiagonal-block form.U1βU1isCOMPLEX array, dimension (LDU1,P). On entry, aP-by-Pmatrix. On exit,U1is postmultiplied by the left singular vector matrix common to[ B11 ; 0 ]and[ B12 0 0 ; 0 -I 0 0 ].LDU1βLDU1isINTEGER. The leading dimension of the arrayU1,LDU1 >= MAX(1,P).U2βU2isCOMPLEX array, dimension (LDU2,M-P). On entry, an(M-P)-by-(M-P)matrix. On exit,U2is postmultiplied by the left singular vector matrix common to[ B21 ; 0 ]and[ B22 0 0 ; 0 0 I ].LDU2βLDU2isINTEGER. The leading dimension of the arrayU2,LDU2 >= MAX(1,M-P).V1TβV1TisCOMPLEX array, dimension (LDV1T,Q). On entry, aQ-by-Qmatrix. On exit,V1Tis premultiplied by the conjugate transpose of the right singular vector matrix common to[ B11 ; 0 ]and[ B21 ; 0 ].LDV1TβLDV1TisINTEGER. The leading dimension of the arrayV1T,LDV1T >= MAX(1,Q).V2TβV2TisCOMPLEX array, dimension (LDV2T,M-Q). On entry, an(M-Q)-by-(M-Q)matrix. On exit,V2Tis premultiplied by the conjugate transpose of the right singular vector matrix common to[ B12 0 0 ; 0 -I 0 ]and[ B22 0 0 ; 0 0 I ].LDV2TβLDV2TisINTEGER. The leading dimension of the arrayV2T,LDV2T >= MAX(1,M-Q).B11DβB11DisREAL array, dimension (Q). WhenCBBCSDconverges,B11Dcontains the cosines ofTHETA(1), ..., THETA(Q). IfCBBCSDfails to converge, thenB11Dcontains the diagonal of the partially reduced top-left block.B11EβB11EisREAL array, dimension (Q-1). WhenCBBCSDconverges,B11Econtains zeros. IfCBBCSDfails to converge, thenB11Econtains the superdiagonal of the partially reduced top-left block.B12DβB12DisREAL array, dimension (Q). WhenCBBCSDconverges,B12Dcontains the negative sines ofTHETA(1), ..., THETA(Q). IfCBBCSDfails to converge, thenB12Dcontains the diagonal of the partially reduced top-right block.B12EβB12EisREAL array, dimension (Q-1). WhenCBBCSDconverges,B12Econtains zeros. IfCBBCSDfails to converge, thenB12Econtains the subdiagonal of the partially reduced top-right block.B21DβB21DisREAL array, dimension (Q). WhenCBBCSDconverges,B21Dcontains the negative sines ofTHETA(1), ..., THETA(Q). IfCBBCSDfails to converge, thenB21Dcontains the diagonal of the partially reduced bottom-left block.B21EβB21EisREAL array, dimension (Q-1). WhenCBBCSDconverges,B21Econtains zeros. IfCBBCSDfails to converge, thenB21Econtains the subdiagonal of the partially reduced bottom-left block.B22DβB22DisREAL array, dimension (Q). WhenCBBCSDconverges,B22Dcontains the negative sines ofTHETA(1), ..., THETA(Q). IfCBBCSDfails to converge, thenB22Dcontains the diagonal of the partially reduced bottom-right block.B22EβB22EisREAL array, dimension (Q-1). WhenCBBCSDconverges,B22Econtains zeros. IfCBBCSDfails to converge, thenB22Econtains the subdiagonal of the partially reduced bottom-right block.RWORKβRWORKisREAL array, dimension (MAX(1,LRWORK)). On exit, ifINFO = 0,RWORK(1)returns the optimalLRWORK.LRWORKβLRWORKisINTEGER. The dimension of the arrayRWORK.LRWORK >= MAX(1,8*Q).
If LRWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the RWORK array, returns this value as the first entry of the work array, and no error message related to LRWORK is issued by XERBLA.
INFOβINFOisINTEGER= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0: ifCBBCSDdid not converge,INFOspecifies the number of nonzero entries inPHI, andB11D,B11E, etc., contain the partially reduced matrix.
π§ Internal Parameters π§
TOLMUL REAL, default = MAX(10,MIN(100,EPS**(-1/8)))
TOLMUL controls the convergence criterion of the QR loop. Angles THETA(i), PHI(i) are rounded to 0 or PI/2 when they are within TOLMUL*EPS of either bound.
π 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 328 of file cbbcsd.f.
π©° AUTHOR π©°
Generated automatically by Doxygen for LAPACK from the source code.
bye bestie π this was LAPACK, Version 3.12.0, page SRC/cbbcsd.f(3) β mwah, slay, and remember: keep every flag, every dimension, every INFO branch exactly where it belongs πβ¨
π¦ 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