SRC/cunbdb2.f(3)
πΈ NAME
SRC/cunbdb2.f is giving Library Functions Manual realness today, and this whole page is about the <hotpink>CUNBDB2</hotpink> subroutine. Yes bestie, we are getting into tall-and-skinny matrix bidiagonalization, and it is lowkey iconic. π
β¨ SYNOPSIS
π«Ά Functions/Subroutines
subroutine cunbdb2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
taup2, tauq1, work, lwork, info)
CUNBDB2
π¦ Function/Subroutine Documentation
Here is the full signature, character for character, no cap:
subroutine cunbdb2 (integer m, integer p, integer q, complex,
dimension(ldx11,*) x11, integer ldx11, complex, dimension(ldx21,*) x21,
integer ldx21, real, dimension(*) theta, real, dimension(*) phi,
complex, dimension(*) taup1, complex, dimension(*) taup2, complex,
dimension(*) tauq1, complex, dimension(*) work, integer lwork, integer
info)
CUNBDB2
π Purpose
CUNBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. Routines CUNBDB1, CUNBDB3, and CUNBDB4 handle cases in which P is not the minimum dimension. π¦
The unitary matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. They are represented implicitly by Householder vectors.
B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI. Yes, that is literally what the source says, bestie. π
π Parameters
MβM is INTEGER. It's the number of rows inX11plus the number of rows inX21. πPβP is INTEGER. The number of rows inX11. Constraint:0 <= P <= min(M-P,Q,M-Q). πQβQ is INTEGER. The number of columns inX11andX21. Constraint:0 <= Q <= M. β¨X11βX11 is COMPLEX array, dimension (LDX11,Q). On entry, the top block of the matrixXto be reduced. On exit, the columns oftril(X11)specify reflectors forP1, and the rows oftriu(X11,1)specify reflectors forQ1. π¦LDX11βLDX11 is INTEGER. The leading dimension ofX11. Constraint:LDX11 >= P. πX21βX21 is COMPLEX array, dimension (LDX21,Q). On entry, the bottom block of the matrixXto be reduced. On exit, the columns oftril(X21)specify reflectors forP2. πΈLDX21βLDX21 is INTEGER. The leading dimension ofX21. Constraint:LDX21 >= M-P. π«ΆTHETAβTHETA is REAL array, dimension (Q). The entries of the bidiagonal blocksB11,B21are defined byTHETAandPHI. See Further Details. πPHIβPHI is REAL array, dimension (Q-1). The entries of the bidiagonal blocksB11,B21are defined byTHETAandPHI. See Further Details. π«TAUP1βTAUP1 is COMPLEX array, dimension (P-1). The scalar factors of the elementary reflectors that defineP1. πTAUP2βTAUP2 is COMPLEX array, dimension (Q). The scalar factors of the elementary reflectors that defineP2. π₯TAUQ1βTAUQ1 is COMPLEX array, dimension (Q). The scalar factors of the elementary reflectors that defineQ1. π§WORKβWORK is COMPLEX array, dimension (LWORK). π»LWORKβLWORK is INTEGER. The dimension of the arrayWORK. Constraint:LWORK >= M-Q. 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 theWORKarray, and no error message related toLWORKis issued byXERBLA. πINFOβINFO is INTEGER.= 0: successful exit. π< 0: ifINFO = -i, thei-th argument had an illegal value. π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
The upper-bidiagonal blocks B11, B21 are represented implicitly by angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1). Every entry in each bidiagonal band is a product of a sine or cosine of a THETA with a sine or cosine of a PHI. See [1] or CUNCSD for details. π
P1, P2, and Q1 are represented as products of elementary reflectors. See CUNCSD2BY1 for details on generating P1, P2, and Q1 using CUNGQR and CUNGLQ. π
π References
[1]Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009. π
Definition at line 200 of file cunbdb2.f.
π€ Author
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, that's the whole page β LAPACK Version 3.12.0, source SRC/cunbdb2.f(3). πβ¨
π¦ 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