Subroutine */
| 27962 | } /* dlasd8_ */ |
| 27963 | |
| 27964 | /* Subroutine */ int dlasda_(integer *icompq, integer *smlsiz, integer *n, |
| 27965 | integer *sqre, doublereal *d__, doublereal *e, doublereal *u, integer |
| 27966 | *ldu, doublereal *vt, integer *k, doublereal *difl, doublereal *difr, |
| 27967 | doublereal *z__, doublereal *poles, integer *givptr, integer *givcol, |
| 27968 | integer *ldgcol, integer *perm, doublereal *givnum, doublereal *c__, |
| 27969 | doublereal *s, doublereal *work, integer *iwork, integer *info) |
| 27970 | { |
| 27971 | /* System generated locals */ |
| 27972 | integer givcol_dim1, givcol_offset, perm_dim1, perm_offset, difl_dim1, |
| 27973 | difl_offset, difr_dim1, difr_offset, givnum_dim1, givnum_offset, |
| 27974 | poles_dim1, poles_offset, u_dim1, u_offset, vt_dim1, vt_offset, |
| 27975 | z_dim1, z_offset, i__1, i__2; |
| 27976 | |
| 27977 | /* Local variables */ |
| 27978 | static integer i__, j, m, i1, ic, lf, nd, ll, nl, vf, nr, vl, im1, ncc, |
| 27979 | nlf, nrf, vfi, iwk, vli, lvl, nru, ndb1, nlp1, lvl2, nrp1; |
| 27980 | static doublereal beta; |
| 27981 | static integer idxq, nlvl; |
| 27982 | static doublereal alpha; |
| 27983 | static integer inode, ndiml, ndimr, idxqi, itemp; |
| 27984 | extern /* Subroutine */ int dcopy_(integer *, doublereal *, integer *, |
| 27985 | doublereal *, integer *); |
| 27986 | static integer sqrei; |
| 27987 | extern /* Subroutine */ int dlasd6_(integer *, integer *, integer *, |
| 27988 | integer *, doublereal *, doublereal *, doublereal *, doublereal *, |
| 27989 | doublereal *, integer *, integer *, integer *, integer *, |
| 27990 | integer *, doublereal *, integer *, doublereal *, doublereal *, |
| 27991 | doublereal *, doublereal *, integer *, doublereal *, doublereal *, |
| 27992 | doublereal *, integer *, integer *); |
| 27993 | static integer nwork1, nwork2; |
| 27994 | extern /* Subroutine */ int dlasdq_(char *, integer *, integer *, integer |
| 27995 | *, integer *, integer *, doublereal *, doublereal *, doublereal *, |
| 27996 | integer *, doublereal *, integer *, doublereal *, integer *, |
| 27997 | doublereal *, integer *), dlasdt_(integer *, integer *, |
| 27998 | integer *, integer *, integer *, integer *, integer *), dlaset_( |
| 27999 | char *, integer *, integer *, doublereal *, doublereal *, |
| 28000 | doublereal *, integer *), xerbla_(char *, integer *); |
| 28001 | static integer smlszp; |
| 28002 | |
| 28003 | |
| 28004 | /* |
| 28005 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 28006 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 28007 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 28008 | June 2010 |
| 28009 | |
| 28010 | |
| 28011 | Purpose |
| 28012 | ======= |
| 28013 | |
| 28014 | Using a divide and conquer approach, DLASDA computes the singular |
| 28015 | value decomposition (SVD) of a real upper bidiagonal N-by-M matrix |
| 28016 | B with diagonal D and offdiagonal E, where M = N + SQRE. The |
| 28017 | algorithm computes the singular values in the SVD B = U * S * VT. |
| 28018 | The orthogonal matrices U and VT are optionally computed in |
| 28019 | compact form. |
| 28020 | |
| 28021 | A related subroutine, DLASD0, computes the singular values and |