Intel® oneAPI Math Kernel Library Developer Reference - C
Computes the singular values of a real upper bidiagonal n-by-m matrix B with diagonal d and off-diagonal e. Used by ?bdsdc.
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 );
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 only the singular values, and optionally, the singular vectors in compact form.
On entry, the row dimension of the upper bidiagonal matrix. This is also the dimension of the main diagonal array d.
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.
Array, DIMENSION (n). On entry, d contains the main diagonal of the bidiagonal matrix.
Array, DIMENSION (m-1). Contains the subdiagonal entries of the bidiagonal matrix. On exit, e is destroyed.
On entry, leading dimension of the output array u.
On entry, leading dimension of the output array vt.
On entry, maximum size of the subproblems at the bottom of the computation tree.
Workspace array, dimension must be at least (8n).
Workspace array, dimension must be at least (3m2+2m).
On exit d, If info = 0, contains singular values of the bidiagonal matrix.
Array, DIMENSION at least (ldq, n). On exit, u contains the left singular vectors.
Array, DIMENSION at least (ldvt, m). On exit, vtT contains the right singular vectors.
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.