Subroutine */
| 15001 | |
| 15002 | |
| 15003 | /* Subroutine */ int dlals0_(integer *icompq, integer *nl, integer *nr, |
| 15004 | integer *sqre, integer *nrhs, doublereal *b, integer *ldb, doublereal |
| 15005 | *bx, integer *ldbx, integer *perm, integer *givptr, integer *givcol, |
| 15006 | integer *ldgcol, doublereal *givnum, integer *ldgnum, doublereal * |
| 15007 | poles, doublereal *difl, doublereal *difr, doublereal *z__, integer * |
| 15008 | k, doublereal *c__, doublereal *s, doublereal *work, integer *info) |
| 15009 | { |
| 15010 | /* System generated locals */ |
| 15011 | integer givcol_dim1, givcol_offset, b_dim1, b_offset, bx_dim1, bx_offset, |
| 15012 | difr_dim1, difr_offset, givnum_dim1, givnum_offset, poles_dim1, |
| 15013 | poles_offset, i__1, i__2; |
| 15014 | doublereal d__1; |
| 15015 | |
| 15016 | /* Local variables */ |
| 15017 | static integer i__, j, m, n; |
| 15018 | static doublereal dj; |
| 15019 | static integer nlp1; |
| 15020 | static doublereal temp; |
| 15021 | extern /* Subroutine */ int drot_(integer *, doublereal *, integer *, |
| 15022 | doublereal *, integer *, doublereal *, doublereal *); |
| 15023 | extern doublereal dnrm2_(integer *, doublereal *, integer *); |
| 15024 | extern /* Subroutine */ int dscal_(integer *, doublereal *, doublereal *, |
| 15025 | integer *); |
| 15026 | static doublereal diflj, difrj, dsigj; |
| 15027 | extern /* Subroutine */ int dgemv_(char *, integer *, integer *, |
| 15028 | doublereal *, doublereal *, integer *, doublereal *, integer *, |
| 15029 | doublereal *, doublereal *, integer *), dcopy_(integer *, |
| 15030 | doublereal *, integer *, doublereal *, integer *); |
| 15031 | extern doublereal dlamc3_(doublereal *, doublereal *); |
| 15032 | extern /* Subroutine */ int dlascl_(char *, integer *, integer *, |
| 15033 | doublereal *, doublereal *, integer *, integer *, doublereal *, |
| 15034 | integer *, integer *), dlacpy_(char *, integer *, integer |
| 15035 | *, doublereal *, integer *, doublereal *, integer *), |
| 15036 | xerbla_(char *, integer *); |
| 15037 | static doublereal dsigjp; |
| 15038 | |
| 15039 | |
| 15040 | /* |
| 15041 | -- LAPACK routine (version 3.2) -- |
| 15042 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 15043 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 15044 | November 2006 |
| 15045 | |
| 15046 | |
| 15047 | Purpose |
| 15048 | ======= |
| 15049 | |
| 15050 | DLALS0 applies back the multiplying factors of either the left or the |
| 15051 | right singular vector matrix of a diagonal matrix appended by a row |
| 15052 | to the right hand side matrix B in solving the least squares problem |
| 15053 | using the divide-and-conquer SVD approach. |
| 15054 | |
| 15055 | For the left singular vector matrix, three types of orthogonal |
| 15056 | matrices are involved: |
| 15057 | |
| 15058 | (1L) Givens rotations: the number of such rotations is GIVPTR; the |
| 15059 | pairs of columns/rows they were applied to are stored in GIVCOL; |
| 15060 | and the C- and S-values of these rotations are stored in GIVNUM. |