bdsvdx(3)
bdsvdx β bidiagonal SVD, bisection π
okay so this is the bdsvdx(3) page from the Library Functions Manual, and it's all about computing a bidiagonal SVD by bisection. not me being obsessed with tridiagonal matrices, but here we are π¦
β¨ NAME β¨
bdsvdx β bdsvdx: bidiagonal SVD, bisection π
πΈ SYNOPSIS πΈ
Functions
the Fortran subroutines on deck are these two icons, no cap:
subroutine dbdsvdx (uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s,
z, ldz, work, iwork, info)
that one is DBDSVDX π
subroutine sbdsvdx (uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s,
z, ldz, work, iwork, info)
and that one is SBDSVDX β¨
π¦ Detailed Description
the detailed description is literally the function documentation right below β both dbdsvdx and sbdsvdx get their full moment π
π Function Documentation
dbdsvdx β DBDSVDX π
here's the exact signature, bestie:
subroutine dbdsvdx (character uplo, character jobz, character range, integer
n, double precision, dimension( * ) d, double precision, dimension( * )
e, double precision vl, double precision vu, integer il, integer iu,
integer ns, double precision, dimension( * ) s, double precision,
dimension( ldz, * ) z, integer ldz, double precision, dimension( * )
work, integer, dimension( * ) iwork, integer info)
DBDSVDX
π― Purpose
so DBDSVDX computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B, B = U * S * VT, where S is a diagonal matrix with non-negative diagonal elements (the singular values of B), and U and VT are orthogonal matrices of left and right singular vectors, respectively. periodt.
given an upper bidiagonal B with diagonal D = [ d_1 d_2 ... d_N ] and superdiagonal E = [ e_1 e_2 ... e_N-1 ], DBDSVDX computes the singular value decomposition of B through the eigenvalues and eigenvectors of the N*2-by-N*2 tridiagonal matrix
| 0 d_1 |
| d_1 0 e_1 |
TGK = | e_1 0 d_2 |
| d_2 . . |
| . . . |
if (s,u,v) is a singular triplet of B with ||u|| = ||v|| = 1, then (+/-s,q), ||q|| = 1, are eigenpairs of TGK, with q = P * ( u' +/-v' ) / sqrt(2) = ( v_1 u_1 v_2 u_2 ... v_n u_n ) / sqrt(2), and P = [ e_{n+1} e_{1} e_{n+2} e_{2} ... ].
given a TGK matrix, one can either a) compute -s,-v and change signs so that the singular values (and corresponding vectors) are already in descending order (as in DGESVD/DGESDD) or b) compute s,v and reorder the values (and corresponding vectors). DBDSVDX implements a) by calling DSTEVX (bisection plus inverse iteration, to be replaced with a version of the Multiple Relative Robust Representation algorithm. (See P. Willems and B. Lang, A framework for the MR^3 algorithm: theory and implementation, SIAM J. Sci. Comput., 35:740-766, 2013.) π₯
π Parameters
UPLOβCHARACTER*1.= 'U': B is upper bidiagonal;= 'L': B is lower bidiagonal. πJOBZβCHARACTER*1.= 'N': Compute singular values only;= 'V': Compute singular values and singular vectors. β¨RANGEβCHARACTER*1.= 'A': all singular values will be found.= 'V': all singular values in the half-open interval[VL,VU)will be found.= 'I': theIL-th throughIU-th singular values will be found. πNβINTEGER. The order of the bidiagonal matrix.N >= 0. π¦DβDOUBLE PRECISION array, dimension (N). Thendiagonal elements of the bidiagonal matrix B. πEβDOUBLE PRECISION array, dimension (max(1,N-1)). The(n-1)superdiagonal elements of the bidiagonal matrix B in elements1toN-1. πΈVLβDOUBLE PRECISION. IfRANGE='V', the lower bound of the interval to be searched for singular values.VU > VL. Not referenced ifRANGE = 'A'or'I'. πVUβDOUBLE PRECISION. IfRANGE='V', the upper bound of the interval to be searched for singular values.VU > VL. Not referenced ifRANGE = 'A'or'I'. πILβINTEGER. IfRANGE='I', the index of the smallest singular value to be returned.1 <= IL <= IU <= min(M,N), ifmin(M,N) > 0. Not referenced ifRANGE = 'A'or'V'. πIUβINTEGER. IfRANGE='I', the index of the largest singular value to be returned.1 <= IL <= IU <= min(M,N), ifmin(M,N) > 0. Not referenced ifRANGE = 'A'or'V'. βNSβINTEGER. The total number of singular values found.0 <= NS <= N. IfRANGE = 'A',NS = N, and ifRANGE = 'I',NS = IU-IL+1. πSβDOUBLE PRECISION array, dimension (N). The firstNSelements contain the selected singular values in ascending order. π«ΆZβDOUBLE PRECISION array, dimension (2*N,K). IfJOBZ = 'V', then ifINFO = 0the firstNScolumns ofZcontain the singular vectors of the matrix B corresponding to the selected singular values, withUin rows1toNandVin rowsN+1toN*2, i.e.
Z = [ U ]
[ V ]
If JOBZ = 'N', then Z is not referenced. Note: The user must ensure that at least K = NS+1 columns are supplied in the array Z; if RANGE = 'V', the exact value of NS is not known in advance and an upper bound must be used. π§
LDZβINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(2,N*2). πWORKβDOUBLE PRECISION array, dimension (14*N). π₯IWORKβINTEGER array, dimension (12*N). IfJOBZ = 'V', then ifINFO = 0, the firstNSelements ofIWORKare zero. IfINFO > 0, thenIWORKcontains the indices of the eigenvectors that failed to converge inDSTEVX. πINFOβINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0: ifINFO = i, thenieigenvectors failed to converge inDSTEVX. The indices of the eigenvectors (as returned byDSTEVX) are stored in the arrayIWORK. IfINFO = N*2 + 1, an internal error occurred. π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π Definition
Definition at line 224 of file dbdsvdx.f. π
sbdsvdx β SBDSVDX π
here's the exact signature for this one too:
subroutine sbdsvdx (character uplo, character jobz, character range, integer
n, real, dimension( * ) d, real, dimension( * ) e, real vl, real vu,
integer il, integer iu, integer ns, real, dimension( * ) s, real,
dimension( ldz, * ) z, integer ldz, real, dimension( * ) work, integer,
dimension( * ) iwork, integer info)
SBDSVDX
π― Purpose
so SBDSVDX computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B, B = U * S * VT, where S is a diagonal matrix with non-negative diagonal elements (the singular values of B), and U and VT are orthogonal matrices of left and right singular vectors, respectively. periodt.
given an upper bidiagonal B with diagonal D = [ d_1 d_2 ... d_N ] and superdiagonal E = [ e_1 e_2 ... e_N-1 ], SBDSVDX computes the singular value decomposition of B through the eigenvalues and eigenvectors of the N*2-by-N*2 tridiagonal matrix
| 0 d_1 |
| d_1 0 e_1 |
TGK = | e_1 0 d_2 |
| d_2 . . |
| . . . |
if (s,u,v) is a singular triplet of B with ||u|| = ||v|| = 1, then (+/-s,q), ||q|| = 1, are eigenpairs of TGK, with q = P * ( u' +/-v' ) / sqrt(2) = ( v_1 u_1 v_2 u_2 ... v_n u_n ) / sqrt(2), and P = [ e_{n+1} e_{1} e_{n+2} e_{2} ... ].
given a TGK matrix, one can either a) compute -s,-v and change signs so that the singular values (and corresponding vectors) are already in descending order (as in SGESVD/SGESDD) or b) compute s,v and reorder the values (and corresponding vectors). SBDSVDX implements a) by calling SSTEVX (bisection plus inverse iteration, to be replaced with a version of the Multiple Relative Robust Representation algorithm. (See P. Willems and B. Lang, A framework for the MR^3 algorithm: theory and implementation, SIAM J. Sci. Comput., 35:740-766, 2013.) π₯
π Parameters
UPLOβCHARACTER*1.= 'U': B is upper bidiagonal;= 'L': B is lower bidiagonal. πJOBZβCHARACTER*1.= 'N': Compute singular values only;= 'V': Compute singular values and singular vectors. β¨RANGEβCHARACTER*1.= 'A': all singular values will be found.= 'V': all singular values in the half-open interval[VL,VU)will be found.= 'I': theIL-th throughIU-th singular values will be found. πNβINTEGER. The order of the bidiagonal matrix.N >= 0. π¦DβREAL array, dimension (N). Thendiagonal elements of the bidiagonal matrix B. πEβREAL array, dimension (max(1,N-1)). The(n-1)superdiagonal elements of the bidiagonal matrix B in elements1toN-1. πΈVLβREAL. IfRANGE='V', the lower bound of the interval to be searched for singular values.VU > VL. Not referenced ifRANGE = 'A'or'I'. πVUβVUβVUisREAL. Bestie, ifRANGE='V', this is the upper bound of the interval to be searched for singular values.VU > VL. Not referenced ifRANGE = 'A' or 'I'. π¦ILβILisINTEGER. IfRANGE='I', this is the index of the smallest singular value to be returned.1 <= IL <= IU <= min(M,N), ifmin(M,N) > 0. Not referenced ifRANGE = 'A' or 'V'. β¨IUβIUisINTEGER. IfRANGE='I', this is the index of the largest singular value to be returned.1 <= IL <= IU <= min(M,N), ifmin(M,N) > 0. Not referenced ifRANGE = 'A' or 'V'. πNSβNSisINTEGER. The total number of singular values found.0 <= NS <= N. IfRANGE = 'A',NS = N, and ifRANGE = 'I',NS = IU-IL+1. πSβSisREALarray, dimension(N). The firstNSelements contain the selected singular values in ascending order. πΈZβZisREALarray, dimension(2*N,K). IfJOBZ = 'V', then ifINFO = 0the firstNScolumns ofZcontain the singular vectors of the matrixBcorresponding to the selected singular values, withUin rows1toNandVin rowsN+1toN*2, i.e.
Z = [ U ]
[ V ]
If JOBZ = 'N', then Z is not referenced. Note: The user must ensure that at least K = NS+1 columns are supplied in the array Z; if RANGE = 'V', the exact value of NS is not known in advance and an upper bound must be used. π«Ά
LDZβLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(2,N*2). πWORKβWORKisREALarray, dimension(14*N). βIWORKβIWORKisINTEGERarray, dimension(12*N). IfJOBZ = 'V', then ifINFO = 0, the firstNSelements ofIWORKare zero. IfINFO > 0, thenIWORKcontains the indices of the eigenvectors that failed to converge inDSTEVX. π§INFOβINFOisINTEGER.
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, then i eigenvectors failed to converge
in SSTEVX. The indices of the eigenvectors
(as returned by SSTEVX) are stored in the
array IWORK.
if INFO = N*2 + 1, an internal error occurred.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 224 of file sbdsvdx.f. π
Author
Generated automatically by Doxygen for LAPACK from the source code. π€π
That's the footer, bestie: LAPACK, version 3.12.0, page bdsvdx(3) β bye! β¨π¦
π¦ 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