DBDSDC(3)
π DBDSDC(3) π
okay bestie, welcome to the Library Functions Manual page for DBDSDC(3). This is the whole thing, and yes, we are keeping every single nerdy detail. π«Ά
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dbdsdc.f β that's the exact path this page is named after. Iconic source-file behavior, no cap. β¨
π¦ SYNOPSIS π¦
π§ Functions/Subroutines π§
subroutine DBDSDC (uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work,
iwork, info)
DBDSDC
β¨ Function/Subroutine Documentation β¨
π DBDSDC π
subroutine DBDSDC (character uplo, character compq, integer n, double
precision, dimension( * ) d, double precision, dimension( * ) e, double
precision, dimension( ldu, * ) u, integer ldu, double precision,
dimension( ldvt, * ) vt, integer ldvt, double precision, dimension( * )
q, integer, dimension( * ) iq, double precision, dimension( * ) work,
integer, dimension( * ) iwork, integer info)
DBDSDC
π― Purpose π―
DBDSDC computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B: B = U * S * VT, using a divide and conquer method, 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.
DBDSDC can be used to compute all singular values, and optionally, singular vectors or singular vectors in compact form.
The code currently calls DLASDQ if singular values only are desired. However, it can be slightly modified to compute singular values using the divide and conquer method.
π§Έ Parameters π§Έ
UPLOβUPLOisCHARACTER*1.= 'U':Bis upper bidiagonal.= 'L':Bis lower bidiagonal.
COMPQβCOMPQisCHARACTER*1. It specifies whether singular vectors are to be computed as follows:= 'N': Compute singular values only;= 'P': Compute singular values and compute singular vectors in compact form;= 'I': Compute singular values and singular vectors.
NβNisINTEGER. The order of the matrixB.N >= 0.DβDisDOUBLE PRECISIONarray, dimension(N). On entry, thendiagonal elements of the bidiagonal matrixB. On exit, ifINFO=0, the singular values ofB.EβEisDOUBLE PRECISIONarray, dimension(N-1). On entry, the elements ofEcontain the offdiagonal elements of the bidiagonal matrix whose SVD is desired. On exit,Ehas been destroyed. Yes, destroyed β do not expect it back, bestie. πUβUisDOUBLE PRECISIONarray, dimension(LDU,N). IfCOMPQ = 'I', then: On exit, ifINFO = 0,Ucontains the left singular vectors of the bidiagonal matrix. For other values ofCOMPQ,Uis not referenced.LDUβLDUisINTEGER. The leading dimension of the arrayU.LDU >= 1. If singular vectors are desired, thenLDU >= max( 1, N ).VTβVTisDOUBLE PRECISIONarray, dimension(LDVT,N). IfCOMPQ = 'I', then: On exit, ifINFO = 0,VT**Tcontains the right singular vectors of the bidiagonal matrix. For other values ofCOMPQ,VTis not referenced.LDVTβLDVTisINTEGER. The leading dimension of the arrayVT.LDVT >= 1. If singular vectors are desired, thenLDVT >= max( 1, N ).QβQisDOUBLE PRECISIONarray, dimension(LDQ). IfCOMPQ = 'P', then: On exit, ifINFO = 0,QandIQcontain the left and right singular vectors in a compact form, requiringO(N log N)space instead of2*N**2. In particular,Qcontains all the DOUBLE PRECISION data inLDQ >= N*(11 + 2*SMLSIZ + 8*INT(LOG_2(N/(SMLSIZ+1))))words of memory, whereSMLSIZis returned byILAENVand is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25). For other values ofCOMPQ,Qis not referenced.IQβIQisINTEGERarray, dimension(LDIQ). IfCOMPQ = 'P', then: On exit, ifINFO = 0,QandIQcontain the left and right singular vectors in a compact form, requiringO(N log N)space instead of2*N**2. In particular,IQcontains all INTEGER data inLDIQ >= N*(3 + 3*INT(LOG_2(N/(SMLSIZ+1))))words of memory, whereSMLSIZis returned byILAENVand is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25). For other values ofCOMPQ,IQis not referenced.WORKβWORKisDOUBLE PRECISIONarray, dimension(MAX(1,LWORK)). IfCOMPQ = 'N'thenLWORK >= (4 * N). IfCOMPQ = 'P'thenLWORK >= (6 * N). IfCOMPQ = 'I'thenLWORK >= (3 * N**2 + 4 * N).IWORKβIWORKisINTEGERarray, dimension(8*N).INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0: The algorithm failed to compute a singular value. The update process of divide and conquer failed.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors π
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
π Definition at line 196 of file dbdsdc.f π
Yep, bestie β DBDSDC is defined at line 196 of file dbdsdc.f.
πͺ Author πͺ
Generated automatically by Doxygen for LAPACK from the source code.
XOXO, this page signs off with LAPACK Version 3.12.0 and /home/abui...RC/dbdsdc.f(3) π
π¦ 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