Subroutine */
| 11479 | } /* clahr2_ */ |
| 11480 | |
| 11481 | /* Subroutine */ int clals0_(integer *icompq, integer *nl, integer *nr, |
| 11482 | integer *sqre, integer *nrhs, complex *b, integer *ldb, complex *bx, |
| 11483 | integer *ldbx, integer *perm, integer *givptr, integer *givcol, |
| 11484 | integer *ldgcol, real *givnum, integer *ldgnum, real *poles, real * |
| 11485 | difl, real *difr, real *z__, integer *k, real *c__, real *s, real * |
| 11486 | rwork, integer *info) |
| 11487 | { |
| 11488 | /* System generated locals */ |
| 11489 | integer givcol_dim1, givcol_offset, difr_dim1, difr_offset, givnum_dim1, |
| 11490 | givnum_offset, poles_dim1, poles_offset, b_dim1, b_offset, |
| 11491 | bx_dim1, bx_offset, i__1, i__2, i__3, i__4, i__5; |
| 11492 | real r__1; |
| 11493 | complex q__1; |
| 11494 | |
| 11495 | /* Local variables */ |
| 11496 | static integer i__, j, m, n; |
| 11497 | static real dj; |
| 11498 | static integer nlp1, jcol; |
| 11499 | static real temp; |
| 11500 | static integer jrow; |
| 11501 | extern doublereal snrm2_(integer *, real *, integer *); |
| 11502 | static real diflj, difrj, dsigj; |
| 11503 | extern /* Subroutine */ int ccopy_(integer *, complex *, integer *, |
| 11504 | complex *, integer *), sgemv_(char *, integer *, integer *, real * |
| 11505 | , real *, integer *, real *, integer *, real *, real *, integer *), csrot_(integer *, complex *, integer *, complex *, |
| 11506 | integer *, real *, real *); |
| 11507 | extern doublereal slamc3_(real *, real *); |
| 11508 | extern /* Subroutine */ int clascl_(char *, integer *, integer *, real *, |
| 11509 | real *, integer *, integer *, complex *, integer *, integer *), csscal_(integer *, real *, complex *, integer *), |
| 11510 | clacpy_(char *, integer *, integer *, complex *, integer *, |
| 11511 | complex *, integer *), xerbla_(char *, integer *); |
| 11512 | static real dsigjp; |
| 11513 | |
| 11514 | |
| 11515 | /* |
| 11516 | -- LAPACK routine (version 3.2) -- |
| 11517 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 11518 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 11519 | November 2006 |
| 11520 | |
| 11521 | |
| 11522 | Purpose |
| 11523 | ======= |
| 11524 | |
| 11525 | CLALS0 applies back the multiplying factors of either the left or the |
| 11526 | right singular vector matrix of a diagonal matrix appended by a row |
| 11527 | to the right hand side matrix B in solving the least squares problem |
| 11528 | using the divide-and-conquer SVD approach. |
| 11529 | |
| 11530 | For the left singular vector matrix, three types of orthogonal |
| 11531 | matrices are involved: |
| 11532 | |
| 11533 | (1L) Givens rotations: the number of such rotations is GIVPTR; the |
| 11534 | pairs of columns/rows they were applied to are stored in GIVCOL; |
| 11535 | and the C- and S-values of these rotations are stored in GIVNUM. |
| 11536 | |
| 11537 | (2L) Permutation. The (NL+1)-st row of B is to be moved to the first |
| 11538 | row, and for J=2:N, PERM(J)-th row of B is to be moved to the |