Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?lasdq
Computes the SVD of a real bidiagonal matrix with diagonal d and off-diagonal e . Used by ?bdsdc .
Syntax
call slasdq ( uplo , sqre , n , ncvt , nru , ncc , d , e , vt , ldvt , u , ldu , c , ldc , work , info )
call dlasdq ( uplo , sqre , n , ncvt , nru , ncc , d , e , vt , ldvt , u , ldu , c , ldc , work , info )
void slasdq ( char*uplo , lapack_int*sqre , lapack_int*n , lapack_int*ncvt , lapack_int*nru , lapack_int*ncc , float*d , float*e , float*vt , lapack_int*ldvt , float*u , lapack_int*ldu , float*c , lapack_int*ldc , float*work , lapack_int*info );
void dlasdq ( char*uplo , lapack_int*sqre , lapack_int*n , lapack_int*ncvt , lapack_int*nru , lapack_int*ncc , double*d , double*e , double*vt , lapack_int*ldvt , double*u , lapack_int*ldu , double*c , lapack_int*ldc , double*work , lapack_int*info );
Include Files
mkl.fi
Description
slasdq dlasdq
The routine ?lasdq computes the singular value decomposition ( SVD ) of a real (upper or lower) bidiagonal matrix with diagonal d and off-diagonal e , accumulating the transformations if desired. If B is the input bidiagonal matrix, the algorithm computes orthogonal matrices Q and P such that B = Q*S*P^{T} . The singular values S are overwritten on d .
The input matrix U is changed to U*Q if desired.
The input matrix VT is changed to P^{T}*VT if desired.
The input matrix C is changed to Q^{T}*C if desired.
Input Parameters
uplo
CHARACTER*1 . On entry, uplo specifies whether the input bidiagonal matrix is upper or lower bidiagonal.
If uplo = 'U' or ‘u’ , B is upper bidiagonal; If uplo = 'L' or ‘l’ , B is lower bidiagonal.
- sqre
-
INTEGER . = 0: then the input matrix is n -by- n . = 1: then the input matrix is n -by-( n +1) if uplu = 'U' and ( n +1)-by- n if uplu = ‘L’ . The bidiagonal matrix has n = nl + nr + 1 rows and m = n + sqre≥n columns.
n
INTEGER . On entry, n specifies the number of rows and columns in the matrix. n must be at least 0.
ncvt
INTEGER . On entry, ncvt specifies the number of columns of the matrix VT . ncvt must be at least 0.
nru
INTEGER . On entry, nru specifies the number of rows of the matrix U . nru must be at least 0.
ncc
INTEGER . On entry, ncc specifies the number of columns of the matrix C . ncc must be at least 0.
- d
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION ( n ). On entry, d contains the diagonal entries of the bidiagonal matrix.
- e
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION is ( n -1) if sqre = 0 and n if sqre = 1 . On entry, the entries of e contain the off-diagonal entries of the bidiagonal matrix.
- vt
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION ( ldvt , ncvt ). On entry, contains a matrix which on exit has been premultiplied by P:code:`T` , dimension n -by- ncvt if sqre = 0 and ( n +1)-by- ncvt if sqre = 1 (not referenced if ncvt =0).
ldvt
INTEGER . On entry, ldvt specifies the leading dimension of vt as declared in the calling (sub) program. ldvt must be at least 1. If ncvt is nonzero, ldvt must also be at least n .
- u
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION ( ldu , n ). On entry, contains a matrix which on exit has been postmultiplied by Q , dimension nru -by- n if sqre = 0 and nru -by-( n +1) if sqre = 1 (not referenced if nru =0).
ldu
INTEGER . On entry, ldu specifies the leading dimension of u as declared in the calling (sub) program. ldu must be at least max(1, nru ) .
- c
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION ( ldc , ncc ). On entry, contains an n -by- ncc matrix which on exit has been premultiplied by Q' , dimension n -by- ncc if sqre = 0 and ( n +1)-by- ncc if sqre = 1 (not referenced if ncc =0).
ldc
INTEGER . On entry, ldc specifies the leading dimension of C as declared in the calling (sub) program. ldc must be at least 1. If ncc is non-zero, ldc must also be at least n .
- work
-
REAL for slasdq DOUBLE PRECISION for dlasdq . Array, DIMENSION (4 n ). This is a workspace array. Only referenced if one of ncvt , nru , or ncc is nonzero, and if n is at least 2.
Output Parameters
- d
-
On normal exit, d contains the singular values in ascending order.
- e
-
On normal exit, e will contain 0. If the algorithm does not converge, d and e will contain the diagonal and superdiagonal entries of a bidiagonal matrix orthogonally equivalent to the one given as input.
- vt
-
On exit, the matrix has been premultiplied by P ‘.
- u
-
On exit, the matrix has been postmultiplied by Q .
- c
-
On exit, the matrix has been premultiplied by Q ‘.
info
INTEGER . On exit, a value of 0 indicates a successful exit. If info < 0 , argument number - info is illegal. If info > 0 , the algorithm did not converge, and info specifies how many superdiagonals did not converge.