Visible to Intel only — GUID: GUID-811F44F3-B51A-41CA-972C-60BF7987F2E0
Visible to Intel only — GUID: GUID-811F44F3-B51A-41CA-972C-60BF7987F2E0
?lasd3
Finds all square roots of the roots of the secular equation, as defined by the values in D and Z, and then updates the singular vectors by matrix multiplication. Used by ?bdsdc.
Syntax
void slasd3( lapack_int *nl, lapack_int *nr, lapack_int *sqre, lapack_int *k, float *d, float *q, lapack_int *ldq, float *dsigma, float *u, lapack_int *ldu, float *u2, lapack_int *ldu2, float *vt, lapack_int *ldvt, float *vt2, lapack_int *ldvt2, lapack_int *idxc, lapack_int *ctot, float *z, lapack_int *info );
void dlasd3( lapack_int *nl, lapack_int *nr, lapack_int *sqre, lapack_int *k, double *d, double *q, lapack_int *ldq, double *dsigma, double *u, lapack_int *ldu, double *u2, lapack_int *ldu2, double *vt, lapack_int *ldvt, double *vt2, lapack_int *ldvt2, lapack_int *idxc, lapack_int *ctot, double *z, lapack_int *info );
Include Files
- mkl.h
Description
The routine ?lasd3 finds all the square roots of the roots of the secular equation, as defined by the values in D and Z.
It makes the appropriate calls to ?lasd4 and then updates the singular vectors by matrix multiplication.
The routine ?lasd3 is called from ?lasd1.
Input Parameters
- nl
-
The row dimension of the upper block.
nl≥ 1.
- nr
-
The row dimension of the lower block.
nr≥ 1.
- sqre
-
If sqre = 0): the lower block is an nr-by-nr square matrix.
If sqre = 1): the lower block is an nr-by-(nr+1) rectangular matrix. The bidiagonal matrix has n = nl + nr + 1 rows and m = n + sqre≥n columns.
- k
-
The size of the secular equation, 1 ≤ k ≤ n.
- q
-
Workspace array, DIMENSION at least (ldq, k).
- ldq
-
The leading dimension of the array Q.
ldq≥k.
- dsigma
-
Array, DIMENSION (k). The first k elements of this array contain the old roots of the deflated updating problem. These are the poles of the secular equation.
- ldu
-
The leading dimension of the array u.
ldu≥n.
- u2
-
Array, DIMENSION (ldu2, n).
The first k columns of this matrix contain the non-deflated left singular vectors for the split problem.
- ldu2
-
The leading dimension of the array u2.
ldu2≥n.
- ldvt
-
The leading dimension of the array vt.
ldvt≥n.
- vt2
-
Array, DIMENSION (ldvt2, n).
The first k columns of vt2' contain the non-deflated right singular vectors for the split problem.
- ldvt2
-
The leading dimension of the array vt2.
ldvt2≥n.
- idxc
-
Array, DIMENSION (n).
The permutation used to arrange the columns of u (and rows of vt) into three groups: the first group contains non-zero entries only at and above (or before) nl +1; the second contains non-zero entries only at and below (or after) nl+2; and the third is dense. The first column of u and the row of vt are treated separately, however. The rows of the singular vectors found by ?lasd4 must be likewise permuted before the matrix multiplies can take place.
- ctot
-
Array, DIMENSION (4). A count of the total number of the various types of columns in u (or rows in vt), as described in idxc.
The fourth column type is any column which has been deflated.
- z
-
Array, DIMENSION (k). The first k elements of this array contain the components of the deflation-adjusted updating row vector.
Output Parameters
- d
-
Array, DIMENSION (k). On exit the square roots of the roots of the secular equation, in ascending order.
- u
-
Array, DIMENSION (ldu, n).
The last n - k columns of this matrix contain the deflated left singular vectors.
- vt
-
Array, DIMENSION (ldvt, m).
The last m - k columns of vt' contain the deflated right singular vectors.
- vt2
-
Destroyed on exit.
- z
-
Destroyed on exit.
- info
-
If info = 0): successful exit.
If info = -i < 0, the i-th argument had an illegal value.
If info = 1, an singular value did not converge.
Application Notes
This code makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.