Subroutine */
| 25226 | } /* dlasd2_ */ |
| 25227 | |
| 25228 | /* Subroutine */ int dlasd3_(integer *nl, integer *nr, integer *sqre, integer |
| 25229 | *k, doublereal *d__, doublereal *q, integer *ldq, doublereal *dsigma, |
| 25230 | doublereal *u, integer *ldu, doublereal *u2, integer *ldu2, |
| 25231 | doublereal *vt, integer *ldvt, doublereal *vt2, integer *ldvt2, |
| 25232 | integer *idxc, integer *ctot, doublereal *z__, integer *info) |
| 25233 | { |
| 25234 | /* System generated locals */ |
| 25235 | integer q_dim1, q_offset, u_dim1, u_offset, u2_dim1, u2_offset, vt_dim1, |
| 25236 | vt_offset, vt2_dim1, vt2_offset, i__1, i__2; |
| 25237 | doublereal d__1, d__2; |
| 25238 | |
| 25239 | /* Local variables */ |
| 25240 | static integer i__, j, m, n, jc; |
| 25241 | static doublereal rho; |
| 25242 | static integer nlp1, nlp2, nrp1; |
| 25243 | static doublereal temp; |
| 25244 | extern doublereal dnrm2_(integer *, doublereal *, integer *); |
| 25245 | extern /* Subroutine */ int dgemm_(char *, char *, integer *, integer *, |
| 25246 | integer *, doublereal *, doublereal *, integer *, doublereal *, |
| 25247 | integer *, doublereal *, doublereal *, integer *); |
| 25248 | static integer ctemp; |
| 25249 | extern /* Subroutine */ int dcopy_(integer *, doublereal *, integer *, |
| 25250 | doublereal *, integer *); |
| 25251 | static integer ktemp; |
| 25252 | extern doublereal dlamc3_(doublereal *, doublereal *); |
| 25253 | extern /* Subroutine */ int dlasd4_(integer *, integer *, doublereal *, |
| 25254 | doublereal *, doublereal *, doublereal *, doublereal *, |
| 25255 | doublereal *, integer *), dlascl_(char *, integer *, integer *, |
| 25256 | doublereal *, doublereal *, integer *, integer *, doublereal *, |
| 25257 | integer *, integer *), dlacpy_(char *, integer *, integer |
| 25258 | *, doublereal *, integer *, doublereal *, integer *), |
| 25259 | xerbla_(char *, integer *); |
| 25260 | |
| 25261 | |
| 25262 | /* |
| 25263 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 25264 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 25265 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 25266 | June 2010 |
| 25267 | |
| 25268 | |
| 25269 | Purpose |
| 25270 | ======= |
| 25271 | |
| 25272 | DLASD3 finds all the square roots of the roots of the secular |
| 25273 | equation, as defined by the values in D and Z. It makes the |
| 25274 | appropriate calls to DLASD4 and then updates the singular |
| 25275 | vectors by matrix multiplication. |
| 25276 | |
| 25277 | This code makes very mild assumptions about floating point |
| 25278 | arithmetic. It will work on machines with a guard digit in |
| 25279 | add/subtract, or on those binary machines without guard digits |
| 25280 | which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2. |
| 25281 | It could conceivably fail on hexadecimal or decimal machines |
| 25282 | without guard digits, but we know of none. |
| 25283 | |
| 25284 | DLASD3 is called from DLASD1. |
| 25285 |