Subroutine */
| 25135 | } /* slasd2_ */ |
| 25136 | |
| 25137 | /* Subroutine */ int slasd3_(integer *nl, integer *nr, integer *sqre, integer |
| 25138 | *k, real *d__, real *q, integer *ldq, real *dsigma, real *u, integer * |
| 25139 | ldu, real *u2, integer *ldu2, real *vt, integer *ldvt, real *vt2, |
| 25140 | integer *ldvt2, integer *idxc, integer *ctot, real *z__, integer * |
| 25141 | info) |
| 25142 | { |
| 25143 | /* System generated locals */ |
| 25144 | integer q_dim1, q_offset, u_dim1, u_offset, u2_dim1, u2_offset, vt_dim1, |
| 25145 | vt_offset, vt2_dim1, vt2_offset, i__1, i__2; |
| 25146 | real r__1, r__2; |
| 25147 | |
| 25148 | /* Local variables */ |
| 25149 | static integer i__, j, m, n, jc; |
| 25150 | static real rho; |
| 25151 | static integer nlp1, nlp2, nrp1; |
| 25152 | static real temp; |
| 25153 | extern doublereal snrm2_(integer *, real *, integer *); |
| 25154 | static integer ctemp; |
| 25155 | extern /* Subroutine */ int sgemm_(char *, char *, integer *, integer *, |
| 25156 | integer *, real *, real *, integer *, real *, integer *, real *, |
| 25157 | real *, integer *); |
| 25158 | static integer ktemp; |
| 25159 | extern /* Subroutine */ int scopy_(integer *, real *, integer *, real *, |
| 25160 | integer *); |
| 25161 | extern doublereal slamc3_(real *, real *); |
| 25162 | extern /* Subroutine */ int slasd4_(integer *, integer *, real *, real *, |
| 25163 | real *, real *, real *, real *, integer *), xerbla_(char *, |
| 25164 | integer *), slascl_(char *, integer *, integer *, real *, |
| 25165 | real *, integer *, integer *, real *, integer *, integer *), slacpy_(char *, integer *, integer *, real *, integer *, |
| 25166 | real *, integer *); |
| 25167 | |
| 25168 | |
| 25169 | /* |
| 25170 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 25171 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 25172 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 25173 | June 2010 |
| 25174 | |
| 25175 | |
| 25176 | Purpose |
| 25177 | ======= |
| 25178 | |
| 25179 | SLASD3 finds all the square roots of the roots of the secular |
| 25180 | equation, as defined by the values in D and Z. It makes the |
| 25181 | appropriate calls to SLASD4 and then updates the singular |
| 25182 | vectors by matrix multiplication. |
| 25183 | |
| 25184 | This code makes very mild assumptions about floating point |
| 25185 | arithmetic. It will work on machines with a guard digit in |
| 25186 | add/subtract, or on those binary machines without guard digits |
| 25187 | which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2. |
| 25188 | It could conceivably fail on hexadecimal or decimal machines |
| 25189 | without guard digits, but we know of none. |
| 25190 | |
| 25191 | SLASD3 is called from SLASD1. |
| 25192 | |
| 25193 | Arguments |
| 25194 | ========= |