Subroutine */
| 24370 | } /* dlasd0_ */ |
| 24371 | |
| 24372 | /* Subroutine */ int dlasd1_(integer *nl, integer *nr, integer *sqre, |
| 24373 | doublereal *d__, doublereal *alpha, doublereal *beta, doublereal *u, |
| 24374 | integer *ldu, doublereal *vt, integer *ldvt, integer *idxq, integer * |
| 24375 | iwork, doublereal *work, integer *info) |
| 24376 | { |
| 24377 | /* System generated locals */ |
| 24378 | integer u_dim1, u_offset, vt_dim1, vt_offset, i__1; |
| 24379 | doublereal d__1, d__2; |
| 24380 | |
| 24381 | /* Local variables */ |
| 24382 | static integer i__, k, m, n, n1, n2, iq, iz, iu2, ldq, idx, ldu2, ivt2, |
| 24383 | idxc, idxp, ldvt2; |
| 24384 | extern /* Subroutine */ int dlasd2_(integer *, integer *, integer *, |
| 24385 | integer *, doublereal *, doublereal *, doublereal *, doublereal *, |
| 24386 | doublereal *, integer *, doublereal *, integer *, doublereal *, |
| 24387 | doublereal *, integer *, doublereal *, integer *, integer *, |
| 24388 | integer *, integer *, integer *, integer *, integer *), dlasd3_( |
| 24389 | integer *, integer *, integer *, integer *, doublereal *, |
| 24390 | doublereal *, integer *, doublereal *, doublereal *, integer *, |
| 24391 | doublereal *, integer *, doublereal *, integer *, doublereal *, |
| 24392 | integer *, integer *, integer *, doublereal *, integer *), |
| 24393 | dlascl_(char *, integer *, integer *, doublereal *, doublereal *, |
| 24394 | integer *, integer *, doublereal *, integer *, integer *), |
| 24395 | dlamrg_(integer *, integer *, doublereal *, integer *, integer *, |
| 24396 | integer *); |
| 24397 | static integer isigma; |
| 24398 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 24399 | static doublereal orgnrm; |
| 24400 | static integer coltyp; |
| 24401 | |
| 24402 | |
| 24403 | /* |
| 24404 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 24405 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 24406 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 24407 | June 2010 |
| 24408 | |
| 24409 | |
| 24410 | Purpose |
| 24411 | ======= |
| 24412 | |
| 24413 | DLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, |
| 24414 | where N = NL + NR + 1 and M = N + SQRE. DLASD1 is called from DLASD0. |
| 24415 | |
| 24416 | A related subroutine DLASD7 handles the case in which the singular |
| 24417 | values (and the singular vectors in factored form) are desired. |
| 24418 | |
| 24419 | DLASD1 computes the SVD as follows: |
| 24420 | |
| 24421 | ( D1(in) 0 0 0 ) |
| 24422 | B = U(in) * ( Z1' a Z2' b ) * VT(in) |
| 24423 | ( 0 0 D2(in) 0 ) |
| 24424 | |
| 24425 | = U(out) * ( D(out) 0) * VT(out) |
| 24426 | |
| 24427 | where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M |
| 24428 | with ALPHA and BETA in the NL+1 and NL+2 th entries and zeros |
| 24429 | elsewhere; and the entry b is empty if SQRE = 0. |