Developer Reference for Intel® oneAPI Math Kernel Library for C
?lasd0
Computes the singular values of a real upper bidiagonal n -by- m matrix B with diagonal d and off-diagonal e . Used by ?bdsdc .
Syntax
call slasd0(n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work, info)
call dlasd0(n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work, info)
void slasd0(lapack_int *n, lapack_int *sqre, float *d, float *e, float *u,
lapack_int *ldu, float *vt, lapack_int *ldvt, lapack_int *smlsiz,
lapack_int *iwork, float *work, lapack_int *info);
void dlasd0(lapack_int *n, lapack_int *sqre, double *d, double *e, double *u,
lapack_int *ldu, double *vt, lapack_int *ldvt, lapack_int *smlsiz,
lapack_int *iwork, double *work, lapack_int *info);
Include Files
mkl.h
Description
Using a divide and conquer approach, the routine ?lasd0 computes the singular value decomposition (SVD) of a real upper bidiagonal n -by- m matrix B with diagonal d and offdiagonal e , where m = n + sqre .
The algorithm computes orthogonal matrices U and VT such that B = U*S*VT . The singular values S are overwritten on d .
The related subroutine ?lasda (Computes the singular value decomposition (SVD) of a real upper bidiagonal matrix with diagonal d and off-diagonal e. Used by ?bdsdc.) computes only the singular values, and optionally, the singular vectors in compact form.
Input Parameters
n
On entry, the row dimension of the upper bidiagonal matrix. This is also the dimension of the main diagonal array d .
sqre
Specifies the column dimension of the bidiagonal matrix.
If sqre = 0 : the bidiagonal matrix has column dimension m = n . If sqre = 1 : the bidiagonal matrix has column dimension m = n+1 .
- d
-
REAL for slasd0 DOUBLE PRECISION for dlasd0 Array, DIMENSION ( n ). On entry, d contains the main diagonal of the bidiagonal matrix.
- e
-
REAL for slasd0 DOUBLE PRECISION for dlasd0 Array, DIMENSION ( m -1). Contains the subdiagonal entries of the bidiagonal matrix. On exit, e is destroyed.
ldu
On entry, leading dimension of the output array u .
ldvt
On entry, leading dimension of the output array vt .
smlsiz
On entry, maximum size of the subproblems at the bottom of the computation tree.
- iwork
-
INTEGER . Workspace array, dimension must be at least (8n) .
- work
-
REAL for slasd0 DOUBLE PRECISION for dlasd0 Workspace array, dimension must be at least (3m^{2}+2m) .
Output Parameters
- d
-
On exit d , If info = 0 , contains singular values of the bidiagonal matrix.
- u
-
REAL for slasd0 DOUBLE PRECISION for dlasd0 Array, DIMENSION at least ( ldq , n ). On exit, u contains the left singular vectors.
- vt
-
REAL for slasd0 DOUBLE PRECISION for dlasd0 Array, DIMENSION at least ( ldvt , m ). On exit, vtT contains the right singular vectors.
info
INTEGER .
If info = 0 : successful exit.
If info = -i < 0 , the i -th argument had an illegal value.
If info = 1 , a singular value did not converge.