.TH "bdsdc" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME bdsdc \- bdsdc: bidiagonal SVD, divide and conquer .SH SYNOPSIS .br .PP .SS "Functions" .in +1c .ti -1c .RI "subroutine \fBdbdsdc\fP (uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork, info)" .br .RI "\fBDBDSDC\fP " .ti -1c .RI "subroutine \fBsbdsdc\fP (uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork, info)" .br .RI "\fBSBDSDC\fP " .in -1c .SH "Detailed Description" .PP .SH "Function Documentation" .PP .SS "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)" .PP \fBDBDSDC\fP .PP \fBPurpose:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIUPLO\fP .PP .nf UPLO is CHARACTER*1 = 'U': B is upper bidiagonal\&. = 'L': B is lower bidiagonal\&. .fi .PP .br \fICOMPQ\fP .PP .nf COMPQ is CHARACTER*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\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER The order of the matrix B\&. N >= 0\&. .fi .PP .br \fID\fP .PP .nf D is DOUBLE PRECISION array, dimension (N) On entry, the n diagonal elements of the bidiagonal matrix B\&. On exit, if INFO=0, the singular values of B\&. .fi .PP .br \fIE\fP .PP .nf E is DOUBLE PRECISION array, dimension (N-1) On entry, the elements of E contain the offdiagonal elements of the bidiagonal matrix whose SVD is desired\&. On exit, E has been destroyed\&. .fi .PP .br \fIU\fP .PP .nf U is DOUBLE PRECISION array, dimension (LDU,N) If COMPQ = 'I', then: On exit, if INFO = 0, U contains the left singular vectors of the bidiagonal matrix\&. For other values of COMPQ, U is not referenced\&. .fi .PP .br \fILDU\fP .PP .nf LDU is INTEGER The leading dimension of the array U\&. LDU >= 1\&. If singular vectors are desired, then LDU >= max( 1, N )\&. .fi .PP .br \fIVT\fP .PP .nf VT is DOUBLE PRECISION array, dimension (LDVT,N) If COMPQ = 'I', then: On exit, if INFO = 0, VT**T contains the right singular vectors of the bidiagonal matrix\&. For other values of COMPQ, VT is not referenced\&. .fi .PP .br \fILDVT\fP .PP .nf LDVT is INTEGER The leading dimension of the array VT\&. LDVT >= 1\&. If singular vectors are desired, then LDVT >= max( 1, N )\&. .fi .PP .br \fIQ\fP .PP .nf Q is DOUBLE PRECISION array, dimension (LDQ) If COMPQ = 'P', then: On exit, if INFO = 0, Q and IQ contain the left and right singular vectors in a compact form, requiring O(N log N) space instead of 2*N**2\&. In particular, Q contains all the DOUBLE PRECISION data in LDQ >= N*(11 + 2*SMLSIZ + 8*INT(LOG_2(N/(SMLSIZ+1)))) words of memory, where SMLSIZ is returned by ILAENV and is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25)\&. For other values of COMPQ, Q is not referenced\&. .fi .PP .br \fIIQ\fP .PP .nf IQ is INTEGER array, dimension (LDIQ) If COMPQ = 'P', then: On exit, if INFO = 0, Q and IQ contain the left and right singular vectors in a compact form, requiring O(N log N) space instead of 2*N**2\&. In particular, IQ contains all INTEGER data in LDIQ >= N*(3 + 3*INT(LOG_2(N/(SMLSIZ+1)))) words of memory, where SMLSIZ is returned by ILAENV and is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25)\&. For other values of COMPQ, IQ is not referenced\&. .fi .PP .br \fIWORK\fP .PP .nf WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) If COMPQ = 'N' then LWORK >= (4 * N)\&. If COMPQ = 'P' then LWORK >= (6 * N)\&. If COMPQ = 'I' then LWORK >= (3 * N**2 + 4 * N)\&. .fi .PP .br \fIIWORK\fP .PP .nf IWORK is INTEGER array, dimension (8*N) .fi .PP .br \fIINFO\fP .PP .nf INFO is INTEGER = 0: successful exit\&. < 0: if INFO = -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\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBContributors:\fP .RS 4 Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA .RE .PP .PP Definition at line \fB196\fP of file \fBdbdsdc\&.f\fP\&. .SS "subroutine sbdsdc (character uplo, character compq, integer n, real, dimension( * ) d, real, dimension( * ) e, real, dimension( ldu, * ) u, integer ldu, real, dimension( ldvt, * ) vt, integer ldvt, real, dimension( * ) q, integer, dimension( * ) iq, real, dimension( * ) work, integer, dimension( * ) iwork, integer info)" .PP \fBSBDSDC\fP .PP \fBPurpose:\fP .RS 4 .PP .nf SBDSDC 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\&. SBDSDC can be used to compute all singular values, and optionally, singular vectors or singular vectors in compact form\&. The code currently calls SLASDQ if singular values only are desired\&. However, it can be slightly modified to compute singular values using the divide and conquer method\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIUPLO\fP .PP .nf UPLO is CHARACTER*1 = 'U': B is upper bidiagonal\&. = 'L': B is lower bidiagonal\&. .fi .PP .br \fICOMPQ\fP .PP .nf COMPQ is CHARACTER*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\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER The order of the matrix B\&. N >= 0\&. .fi .PP .br \fID\fP .PP .nf D is REAL array, dimension (N) On entry, the n diagonal elements of the bidiagonal matrix B\&. On exit, if INFO=0, the singular values of B\&. .fi .PP .br \fIE\fP .PP .nf E is REAL array, dimension (N-1) On entry, the elements of E contain the offdiagonal elements of the bidiagonal matrix whose SVD is desired\&. On exit, E has been destroyed\&. .fi .PP .br \fIU\fP .PP .nf U is REAL array, dimension (LDU,N) If COMPQ = 'I', then: On exit, if INFO = 0, U contains the left singular vectors of the bidiagonal matrix\&. For other values of COMPQ, U is not referenced\&. .fi .PP .br \fILDU\fP .PP .nf LDU is INTEGER The leading dimension of the array U\&. LDU >= 1\&. If singular vectors are desired, then LDU >= max( 1, N )\&. .fi .PP .br \fIVT\fP .PP .nf VT is REAL array, dimension (LDVT,N) If COMPQ = 'I', then: On exit, if INFO = 0, VT**T contains the right singular vectors of the bidiagonal matrix\&. For other values of COMPQ, VT is not referenced\&. .fi .PP .br \fILDVT\fP .PP .nf LDVT is INTEGER The leading dimension of the array VT\&. LDVT >= 1\&. If singular vectors are desired, then LDVT >= max( 1, N )\&. .fi .PP .br \fIQ\fP .PP .nf Q is REAL array, dimension (LDQ) If COMPQ = 'P', then: On exit, if INFO = 0, Q and IQ contain the left and right singular vectors in a compact form, requiring O(N log N) space instead of 2*N**2\&. In particular, Q contains all the REAL data in LDQ >= N*(11 + 2*SMLSIZ + 8*INT(LOG_2(N/(SMLSIZ+1)))) words of memory, where SMLSIZ is returned by ILAENV and is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25)\&. For other values of COMPQ, Q is not referenced\&. .fi .PP .br \fIIQ\fP .PP .nf IQ is INTEGER array, dimension (LDIQ) If COMPQ = 'P', then: On exit, if INFO = 0, Q and IQ contain the left and right singular vectors in a compact form, requiring O(N log N) space instead of 2*N**2\&. In particular, IQ contains all INTEGER data in LDIQ >= N*(3 + 3*INT(LOG_2(N/(SMLSIZ+1)))) words of memory, where SMLSIZ is returned by ILAENV and is equal to the maximum size of the subproblems at the bottom of the computation tree (usually about 25)\&. For other values of COMPQ, IQ is not referenced\&. .fi .PP .br \fIWORK\fP .PP .nf WORK is REAL array, dimension (MAX(1,LWORK)) If COMPQ = 'N' then LWORK >= (4 * N)\&. If COMPQ = 'P' then LWORK >= (6 * N)\&. If COMPQ = 'I' then LWORK >= (3 * N**2 + 4 * N)\&. .fi .PP .br \fIIWORK\fP .PP .nf IWORK is INTEGER array, dimension (8*N) .fi .PP .br \fIINFO\fP .PP .nf INFO is INTEGER = 0: successful exit\&. < 0: if INFO = -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\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBContributors:\fP .RS 4 Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA .RE .PP .PP Definition at line \fB196\fP of file \fBsbdsdc\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.