ZUNBDB(3)
ZUNBDB(3) π β¨ β bestie edition
okay so this is ZUNBDB, straight from the LAPACK Library Functions Manual, and itβs giving βmath but make it cuteβ energy. The source path is /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zunbdb.f. Buckle up, weβre doing bidiagonal blocks π
πΈ NAME
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zunbdb.f
β¨ SYNOPSIS
π§ Functions/Subroutines
subroutine ZUNBDB (trans, signs, m, p, q, x11, ldx11, x12, ldx12, x21,
ldx21, x22, ldx22, theta, phi, taup1, taup2, tauq1, tauq2, work,
lwork, info)
ZUNBDB
π Function/Subroutine Documentation
π subroutine ZUNBDB
subroutine ZUNBDB (character trans, character signs, integer m, integer p,
integer q, complex*16, dimension( ldx11, * ) x11, integer ldx11,
complex*16, dimension( ldx12, * ) x12, integer ldx12, complex*16,
dimension( ldx21, * ) x21, integer ldx21, complex*16, dimension( ldx22,
* ) x22, integer ldx22, double precision, dimension( * ) theta, double
precision, dimension( * ) phi, complex*16, dimension( * ) taup1,
complex*16, dimension( * ) taup2, complex*16, dimension( * ) tauq1,
complex*16, dimension( * ) tauq2, complex*16, dimension( * ) work,
integer lwork, integer info)
ZUNBDB
π Purpose
okay so ZUNBDB simultaneously bidiagonalizes the blocks of an M-by-M partitioned unitary matrix X. The iconic equation is:
[ B11 | B12 0 0 ]
[ X11 | X12 ] [ P1 | ] [ 0 | 0 -I 0 ] [ Q1 | ]**H
X = [-----------] = [---------] [----------------] [---------] .
[ X21 | X22 ] [ | P2 ] [ B21 | B22 0 0 ] [ | Q2 ]
[ 0 | 0 0 I ]
X11 is P-by-Q. Q must be no larger than P, M-P, or M-Q. (If this is not the case, then X must be transposed and/or permuted. This can be done in constant time using the TRANS and SIGNS options. See ZUNCSD for details.)
The unitary matrices P1, P2, Q1, and Q2 are P-by-P, (M-P)-by-(M-P), Q-by-Q, and (M-Q)-by-(M-Q), respectively. They are represented implicitly by Householder vectors.
B11, B12, B21, and B22 are Q-by-Q bidiagonal matrices represented implicitly by angles THETA, PHI.
π«Ά Parameters
TRANSβTRANS is CHARACTER= '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βSIGNS is CHARACTER= 'O': the lower-left block is made nonpositive (the convention);- otherwise: the upper-right block is made nonpositive (the convention).
MβM is INTEGER. The number of rows and columns in X.PβP is INTEGER. The number of rows inX11andX12.0 <= P <= M.QβQ is INTEGER. The number of columns inX11andX21.0 <= Q <= MIN(P,M-P,M-Q).X11βX11 is COMPLEX*16 array, dimension (LDX11,Q). On entry, the top-left block of the unitary matrix to be reduced. On exit, the form depends onTRANS:- If
TRANS = 'N', then the columns oftril(X11)specify reflectors forP1, the rows oftriu(X11,1)specify reflectors forQ1; - else
TRANS = 'T', and the rows oftriu(X11)specify reflectors forP1, the columns oftril(X11,-1)specify reflectors forQ1.
- If
LDX11βLDX11 is INTEGER. The leading dimension ofX11. IfTRANS = 'N', thenLDX11 >= P; elseLDX11 >= Q.X12βX12 is COMPLEX*16 array, dimension (LDX12,M-Q). On entry, the top-right block of the unitary matrix to be reduced. On exit, the form depends onTRANS:- If
TRANS = 'N', then the rows oftriu(X12)specify the first P reflectors forQ2; - else
TRANS = 'T', and the columns oftril(X12)specify the first P reflectors forQ2.
- If
LDX12βLDX12 is INTEGER. The leading dimension ofX12. IfTRANS = 'N', thenLDX12 >= P; elseLDX11 >= M-Q. (Yes, it saysLDX11there. Iβm keeping it exactly as written, bestie π.)X21βX21 is COMPLEX*16 array, dimension (LDX21,Q). On entry, the bottom-left block of the unitary matrix to be reduced. On exit, the form depends onTRANS:- If
TRANS = 'N', then the columns oftril(X21)specify reflectors forP2; - else
TRANS = 'T', and the rows oftriu(X21)specify reflectors forP2.
- If
LDX21βLDX21 is INTEGER. The leading dimension ofX21. IfTRANS = 'N', thenLDX21 >= M-P; elseLDX21 >= Q.X22βX22 is COMPLEX*16 array, dimension (LDX22,M-Q). On entry, the bottom-right block of the unitary matrix to be reduced. On exit, the form depends onTRANS:- If
TRANS = 'N', then the rows oftriu(X22(Q+1:M-P,P+1:M-Q))specify the last M-P-Q reflectors forQ2, - else
TRANS = 'T', and the columns oftril(X22(P+1:M-Q,Q+1:M-P))specify the last M-P-Q reflectors forP2.
- If
LDX22βLDX22 is INTEGER. The leading dimension ofX22. IfTRANS = 'N', thenLDX22 >= M-P; elseLDX22 >= M-Q.THETAβTHETA is DOUBLE PRECISION array, dimension (Q). The entries of the bidiagonal blocksB11,B12,B21,B22can be computed from the anglesTHETAandPHI. See Further Details.PHIβPHI is DOUBLE PRECISION array, dimension (Q-1). The entries of the bidiagonal blocksB11,B12,B21,B22can be computed from the anglesTHETAandPHI. See Further Details.TAUP1βTAUP1 is COMPLEX*16 array, dimension (P). The scalar factors of the elementary reflectors that defineP1.TAUP2βTAUP2 is COMPLEX*16 array, dimension (M-P). The scalar factors of the elementary reflectors that defineP2.TAUQ1βTAUQ1 is COMPLEX*16 array, dimension (Q). The scalar factors of the elementary reflectors that defineQ1.TAUQ2βTAUQ2 is COMPLEX*16 array, dimension (M-Q). The scalar factors of the elementary reflectors that defineQ2.WORKβWORK is COMPLEX*16 array, dimension (LWORK).LWORKβLWORK is INTEGER. The dimension of the arrayWORK.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, the i-th argument had an illegal value.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π§ Further Details
- The bidiagonal blocks
B11,B12,B21, andB22are represented implicitly by anglesTHETA(1), ..., THETA(Q)andPHI(1), ..., PHI(Q-1). B11andB21are upper bidiagonal, whileB21andB22are lower bidiagonal. (Yes,B21appears in both lists β keeping the source exactly as-is, bestie.)- Every entry in each bidiagonal band is a product of a sine or cosine of a
THETAwith a sine or cosine of aPHI. See [1] orZUNCSDfor details. P1,P2,Q1, andQ2are represented as products of elementary reflectors. SeeZUNCSDfor details on generatingP1,P2,Q1, andQ2usingZUNGQRandZUNGLQ.
π References
- [1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
Definition at line 284 of file zunbdb.f.
π₯οΈ Author
Generated automatically by Doxygen for LAPACK from the source code.
Thatβs the whole page, bestie: LAPACK Version 3.12.0, source /home/abui...RC/zunbdb.f(3). The footer didnβt give me a date, so Iβm not inventing one β periodt. πβ¨
π¦ 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