?lasd3
?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
Input Parameters
- nl
- The row dimension of the upper block..nl≥1
- nr
- The row dimension of the lower block..nr≥1
- sqre
- If): the lower block is ansqre= 0nr-by-nrsquare matrix.If): the lower block is ansqre= 1nr-by-(nr+1) rectangular matrix. The bidiagonal matrix hasrows andn=nl+nr+ 1columns.m=n+sqre≥n
- k
- The size of the secular equation,1 ≤.k≤n
- q
- Workspace array,DIMENSIONat least (ldq,k).
- ldq
- The leading dimension of the arrayQ..ldq≥k
- dsigma
- Array,DIMENSION(k). The firstkelements 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 arrayu..ldu≥n
- u2
- Array,DIMENSION(ldu2,n).The firstkcolumns of this matrix contain the non-deflated left singular vectors for the split problem.
- ldu2
- The leading dimension of the arrayu2..ldu2≥n
- ldvt
- The leading dimension of the arrayvt..ldvt≥n
- vt2
- Array,DIMENSION(ldvt2,n).The firstkcolumns ofvt2' contain the non-deflated right singular vectors for the split problem.
- ldvt2
- The leading dimension of the arrayvt2..ldvt2≥n
- idxc
- Array,DIMENSION(n).The permutation used to arrange the columns ofu(and rows ofvt) into three groups: the first group contains non-zero entries only at and above (or before); the second contains non-zero entries only at and below (or after)nl+1; and the third is dense. The first column ofnl+2uand the row ofvtare treated separately, however. The rows of the singular vectors found by?lasd4must 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 inu(or rows invt), as described inidxc.The fourth column type is any column which has been deflated.
- z
- Array,DIMENSION(k). The firstkelements 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 lastn-kcolumns of this matrix contain the deflated left singular vectors.
- vt
- Array,DIMENSION(ldvt,m).The lastcolumns ofm-kvt' contain the deflated right singular vectors.
- vt2
- Destroyed on exit.
- z
- Destroyed on exit.
- info
- If): successful exit.info= 0If, theinfo= -i< 0i-th argument had an illegal value.If, an singular value did not converge.info= 1
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.