/home/abui.../zunbdb2.f(3)
๐ธ NAME ๐ธ
okay so this is the manual page for /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zunbdb2.f, straight out of the LAPACK Library Functions Manual, bestie ๐
โจ SYNOPSIS โจ
๐ซถ Functions/Subroutines
subroutine ZUNBDB2 (m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1,
taup2, tauq1, work, lwork, info)
ZUNBDB2 โ that's her, that's the icon ๐
๐ Function/Subroutine Documentation ๐
subroutine ZUNBDB2 (integer m, integer p, integer q, complex*16,
dimension(ldx11,*) x11, integer ldx11, complex*16, dimension(ldx21,*)
x21, integer ldx21, double precision, dimension(*) theta, double
precision, dimension(*) phi, complex*16, dimension(*) taup1, complex*16,
dimension(*) taup2, complex*16, dimension(*) tauq1, complex*16,
dimension(*) work, integer lwork, integer info)
ZUNBDB2 ๐
๐ฅ Purpose:
ok so picture this: ZUNBDB2 simultaneously bidiagonalizes the blocks of a tall and skinny matrix X with orthonormal columns. like, she does it all at once, no cap:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
so X11 is P-by-Q, and X21 is (M-P)-by-Q. P must be no larger than M-P, Q, or M-Q. and listen โ routines ZUNBDB1, ZUNBDB3, and ZUNBDB4 handle cases in which P is not the minimum dimension. different routines for different vibes, periodt.
The unitary matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), and (M-Q)-by-(M-Q), respectively. they're represented implicitly by Householder vectors โ she's mysterious like that ๐
B11 and B12 are P-by-P bidiagonal matrices represented implicitly by angles THETA, PHI. it's giving trigonometry main character energy โญ
๐ Parameters
MโM is INTEGER. The number of rows X11 plus the number of rows in X21. literally just add them ๐งฎPโP is INTEGER. The number of rows in X11.0 <= P <= min(M-P,Q,M-Q). boundaries bestie, respect them.QโQ is INTEGER. The number of columns in X11 and X21.0 <= Q <= M.X11โX11 is COMPLEX*16 array, dimension (LDX11,Q). On entry, the top block of the matrix X to be reduced. On exit, the columns oftril(X11)specify reflectors for P1 and the rows oftriu(X11,1)specify reflectors for Q1. she goes in one thing and comes out iconic ๐ซLDX11โLDX11 is INTEGER. The leading dimension of X11.LDX11 >= P.X21โX21 is COMPLEX*16 array, dimension (LDX21,Q). On entry, the bottom block of the matrix X to be reduced. On exit, the columns oftril(X21)specify reflectors for P2.LDX21โLDX21 is INTEGER. The leading dimension of X21.LDX21 >= M-P.THETAโTHETA is DOUBLE PRECISION array, dimension (Q). The entries of the bidiagonal blocks B11, B21 are defined byTHETAandPHI. See Further Details (spoiler: she's down there ๐).PHIโPHI is DOUBLE PRECISION array, dimension (Q-1). The entries of the bidiagonal blocks B11, B21 are defined byTHETAandPHI. See Further Details. yes, dimension Q-1, not Q, don't come for me ๐ญTAUP1โTAUP1 is COMPLEX*16 array, dimension (P-1). The scalar factors of the elementary reflectors that define P1.TAUP2โTAUP2 is COMPLEX*16 array, dimension (Q). The scalar factors of the elementary reflectors that define P2.TAUQ1โTAUQ1 is COMPLEX*16 array, dimension (Q). The scalar factors of the elementary reflectors that define Q1.WORKโWORK is COMPLEX*16 array, dimension (LWORK). that's the workspace, she works hard ๐ชLWORKโLWORK is INTEGER. The dimension of the array WORK.LWORK >= M-Q.
๐จ okay important: if LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. so don't panic, it's not a glitch, it's a feature โจ
INFOโINFO is INTEGER:= 0: successful exit. slay ๐< 0: ifINFO = -i, the i-th argument had an illegal value. not me picking a bad argument ๐
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad showed up fr fr ๐ซถ
๐ฆ 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 ZUNCSD for details. it's sines and cosines all the way down bestie ๐
P1, P2, and Q1 are represented as products of elementary reflectors. See ZUNCSD2BY1 for details on generating P1, P2, and Q1 using ZUNGQR and ZUNGLQ. iykyk ๐
๐ References:
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
cite your sources, always ๐
Definition at line 199 of file zunbdb2.f. โ line 199, iconic line, no notes ๐ฅ
โญ Author
Generated automatically by Doxygen for LAPACK from the source code. not a human, just doxygen doing her little thing ๐คโจ
ok that's the whole page!! tysm for reading, go forth and bidiagonalize responsibly ๐
LAPACK โ Version 3.12.0 โ /home/abui.../zunbdb2.f(3) โ mwah, love u, bye ๐๐
๐ฆ 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