Subroutine */
| 24283 | } /* slasd0_ */ |
| 24284 | |
| 24285 | /* Subroutine */ int slasd1_(integer *nl, integer *nr, integer *sqre, real * |
| 24286 | d__, real *alpha, real *beta, real *u, integer *ldu, real *vt, |
| 24287 | integer *ldvt, integer *idxq, integer *iwork, real *work, integer * |
| 24288 | info) |
| 24289 | { |
| 24290 | /* System generated locals */ |
| 24291 | integer u_dim1, u_offset, vt_dim1, vt_offset, i__1; |
| 24292 | real r__1, r__2; |
| 24293 | |
| 24294 | /* Local variables */ |
| 24295 | static integer i__, k, m, n, n1, n2, iq, iz, iu2, ldq, idx, ldu2, ivt2, |
| 24296 | idxc, idxp, ldvt2; |
| 24297 | extern /* Subroutine */ int slasd2_(integer *, integer *, integer *, |
| 24298 | integer *, real *, real *, real *, real *, real *, integer *, |
| 24299 | real *, integer *, real *, real *, integer *, real *, integer *, |
| 24300 | integer *, integer *, integer *, integer *, integer *, integer *), |
| 24301 | slasd3_(integer *, integer *, integer *, integer *, real *, real |
| 24302 | *, integer *, real *, real *, integer *, real *, integer *, real * |
| 24303 | , integer *, real *, integer *, integer *, integer *, real *, |
| 24304 | integer *); |
| 24305 | static integer isigma; |
| 24306 | extern /* Subroutine */ int xerbla_(char *, integer *), slascl_( |
| 24307 | char *, integer *, integer *, real *, real *, integer *, integer * |
| 24308 | , real *, integer *, integer *), slamrg_(integer *, |
| 24309 | integer *, real *, integer *, integer *, integer *); |
| 24310 | static real orgnrm; |
| 24311 | static integer coltyp; |
| 24312 | |
| 24313 | |
| 24314 | /* |
| 24315 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 24316 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 24317 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 24318 | June 2010 |
| 24319 | |
| 24320 | |
| 24321 | Purpose |
| 24322 | ======= |
| 24323 | |
| 24324 | SLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, |
| 24325 | where N = NL + NR + 1 and M = N + SQRE. SLASD1 is called from SLASD0. |
| 24326 | |
| 24327 | A related subroutine SLASD7 handles the case in which the singular |
| 24328 | values (and the singular vectors in factored form) are desired. |
| 24329 | |
| 24330 | SLASD1 computes the SVD as follows: |
| 24331 | |
| 24332 | ( D1(in) 0 0 0 ) |
| 24333 | B = U(in) * ( Z1' a Z2' b ) * VT(in) |
| 24334 | ( 0 0 D2(in) 0 ) |
| 24335 | |
| 24336 | = U(out) * ( D(out) 0) * VT(out) |
| 24337 | |
| 24338 | where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M |
| 24339 | with ALPHA and BETA in the NL+1 and NL+2 th entries and zeros |
| 24340 | elsewhere; and the entry b is empty if SQRE = 0. |
| 24341 | |
| 24342 | The left singular vectors of the original matrix are stored in U, and |