SRC/dbdsdc.f(3)
πΈ SRC/dbdsdc.f(3) β Library Functions Manual πΈ
okay bestie, welcome to the cutest little corner of the Library Functions Manual. This page is all about SRC/dbdsdc.f, and itβs giving βlinear algebra but make it main character.β π
β¨ NAME β¨
SRC/dbdsdc.f β the function/subroutine page for dbdsdc. Thatβs it. Iconic minimalism. π
π SYNOPSIS π
Functions/Subroutines
subroutine dbdsdc (uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work,
iwork, info)
DBDSDC
π Function/Subroutine Documentation π
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 β yes bestie, thatβs the name and it ate. π
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. Here 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. Obsessed. β¨
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. Noted, bestie. π
Parameters
UPLOβUPLOisCHARACTER*1.= 'U':Bis upper bidiagonal.= 'L':Bis lower bidiagonal.COMPQβCOMPQisCHARACTER*1. 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, the n diagonal 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.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 theDOUBLE PRECISIONdata 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 allINTEGERdata 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.
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code.
π«Ά Cute sign-off: LAPACK Version 3.12.0, page SRC/dbdsdc.f(3). Mwah πβ¨
π¦ 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