Visible to Intel only — GUID: GUID-3AAA7AE9-4796-4296-9BFD-185F7A5D7EC8
Visible to Intel only — GUID: GUID-3AAA7AE9-4796-4296-9BFD-185F7A5D7EC8
?lasda
Computes the singular value decomposition (SVD) of a real upper bidiagonal matrix with diagonal d and off-diagonal e. Used by ?bdsdc.
Syntax
void slasda( lapack_int *icompq, lapack_int *smlsiz, lapack_int *n, lapack_int *sqre, float *d, float *e, float *u, lapack_int *ldu, float *vt, lapack_int *k, float *difl, float *difr, float *z, float *poles, lapack_int *givptr, lapack_int *givcol, lapack_int *ldgcol, lapack_int *perm, float *givnum, float *c, float *s, float *work, lapack_int *iwork, lapack_int *info );
void dlasda( lapack_int *icompq, lapack_int *smlsiz, lapack_int *n, lapack_int *sqre, double *d, double *e, double *u, lapack_int *ldu, double *vt, lapack_int *k, double *difl, double *difr, double *z, double *poles, lapack_int *givptr, lapack_int *givcol, lapack_int *ldgcol, lapack_int *perm, double *givnum, double *c, double *s, double *work, lapack_int *iwork, lapack_int *info );
Include Files
- mkl.h
Description
Using a divide and conquer approach, ?lasda computes the singular value decomposition (SVD) of a real upper bidiagonal n-by-m matrix B with diagonal d and off-diagonal e, where m = n + sqre.
The algorithm computes the singular values in the SVDB = U*S*VT. The orthogonal matrices U and VT are optionally computed in compact form. A related subroutine ?lasd0 computes the singular values and the singular vectors in explicit form.
Input Parameters
- icompq
-
Specifies whether singular vectors are to be computed in compact form, as follows:
= 0: Compute singular values only.
= 1: Compute singular vectors of upper bidiagonal matrix in compact form.
- smlsiz
-
The maximum size of the subproblems at the bottom of the computation tree.
- n
-
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
-
Array, DIMENSION (n). On entry, d contains the main diagonal of the bidiagonal matrix.
- e
-
Array, DIMENSION ( m - 1 ). Contains the subdiagonal entries of the bidiagonal matrix. On exit, e is destroyed.
- ldu
-
The leading dimension of arrays u, vt, difl, difr, poles, givnum, and z. ldu≥n.
- ldgcol
-
The leading dimension of arrays givcol and perm. ldgcol≥n.
- work
-
Workspace array, DIMENSION (6n+(smlsiz+1)2).
- iwork
-
Workspace array, Dimension must be at least (7n).
Output Parameters
- d
-
On exit d, if info = 0, contains the singular values of the bidiagonal matrix.
- u
-
Array, DIMENSION (ldu, smlsiz) if icompq =1.
Not referenced if icompq = 0.
If icompq = 1, on exit, u contains the left singular vector matrices of all subproblems at the bottom level.
- vt
-
Array, DIMENSION ( ldu, smlsiz+1 ) if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, vt' contains the right singular vector matrices of all subproblems at the bottom level.
- k
-
Array, DIMENSION (n) if icompq = 1 and
DIMENSION (1) if icompq = 0.
If icompq = 1, on exit, k(i) is the dimension of the i-th secular equation on the computation tree.
- difl
-
REAL for slasda
DOUBLE PRECISION for dlasda.
Array, DIMENSION ( ldu, nlvl ),
where nlvl = floor(log2(n/smlsiz)).
- difr
-
Array,
DIMENSION ( ldu, 2 nlvl ) if icompq = 1 and
DIMENSION (n) if icompq = 0.
If icompq = 1, on exit, difl(1:n, i) and difr(1:n,2i -1) record distances between singular values on the i-th level and singular values on the (i -1)-th level, and difr(1:n, 2i ) contains the normalizing factors for the right singular vector matrix. See ?lasd8 for details.
- z
-
Array,
DIMENSION ( ldu, nlvl ) if icompq = 1 and
DIMENSION (n) if icompq = 0. The first k elements of z(1, i) contain the components of the deflation-adjusted updating row vector for subproblems on the i-th level.
- poles
-
Array, DIMENSION(ldu, 2*nlvl)
if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, poles(1, 2i - 1) and poles(1, 2i) contain the new and old singular values involved in the secular equations on the i-th level.
- givptr
-
Array, DIMENSION (n) if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, givptr( i ) records the number of Givens rotations performed on the i-th problem on the computation tree.
- givcol
-
Array, DIMENSION(ldgcol, 2*nlvl) if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, for each i, givcol(1, 2 i - 1) and givcol(1, 2 i) record the locations of Givens rotations performed on the i-th level on the computation tree.
- perm
-
Array, DIMENSION ( ldgcol, nlvl ) if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, perm (1, i) records permutations done on the i-th level of the computation tree.
- givnum
-
Array DIMENSION ( ldu, 2*nlvl ) if icompq = 1, and not referenced if icompq = 0. If icompq = 1, on exit, for each i, givnum(1, 2 i - 1) and givnum(1, 2 i) record the C- and S-values of Givens rotations performed on the i-th level on the computation tree.
- c
-
Array,
DIMENSION (n) if icompq = 1, and
DIMENSION (1) if icompq = 0.
If icompq = 1 and the i-th subproblem is not square, on exit, c(i) contains the C-value of a Givens rotation related to the right null space of the i-th subproblem.
- s
-
Array,
DIMENSION (n) icompq = 1, and
DIMENSION (1) if icompq = 0.
If icompq = 1 and the i-th subproblem is not square, on exit, s(i) contains the S-value of a Givens rotation related to the right null space of the i-th subproblem.
- info
-
= 0: successful exit.
< 0: if info = -i, the i-th argument had an illegal value
> 0: If info = 1, an singular value did not converge