Subroutine */
| 27860 | } /* slasd8_ */ |
| 27861 | |
| 27862 | /* Subroutine */ int slasda_(integer *icompq, integer *smlsiz, integer *n, |
| 27863 | integer *sqre, real *d__, real *e, real *u, integer *ldu, real *vt, |
| 27864 | integer *k, real *difl, real *difr, real *z__, real *poles, integer * |
| 27865 | givptr, integer *givcol, integer *ldgcol, integer *perm, real *givnum, |
| 27866 | real *c__, real *s, real *work, integer *iwork, integer *info) |
| 27867 | { |
| 27868 | /* System generated locals */ |
| 27869 | integer givcol_dim1, givcol_offset, perm_dim1, perm_offset, difl_dim1, |
| 27870 | difl_offset, difr_dim1, difr_offset, givnum_dim1, givnum_offset, |
| 27871 | poles_dim1, poles_offset, u_dim1, u_offset, vt_dim1, vt_offset, |
| 27872 | z_dim1, z_offset, i__1, i__2; |
| 27873 | |
| 27874 | /* Local variables */ |
| 27875 | static integer i__, j, m, i1, ic, lf, nd, ll, nl, vf, nr, vl, im1, ncc, |
| 27876 | nlf, nrf, vfi, iwk, vli, lvl, nru, ndb1, nlp1, lvl2, nrp1; |
| 27877 | static real beta; |
| 27878 | static integer idxq, nlvl; |
| 27879 | static real alpha; |
| 27880 | static integer inode, ndiml, ndimr, idxqi, itemp, sqrei; |
| 27881 | extern /* Subroutine */ int scopy_(integer *, real *, integer *, real *, |
| 27882 | integer *), slasd6_(integer *, integer *, integer *, integer *, |
| 27883 | real *, real *, real *, real *, real *, integer *, integer *, |
| 27884 | integer *, integer *, integer *, real *, integer *, real *, real * |
| 27885 | , real *, real *, integer *, real *, real *, real *, integer *, |
| 27886 | integer *); |
| 27887 | static integer nwork1, nwork2; |
| 27888 | extern /* Subroutine */ int xerbla_(char *, integer *), slasdq_( |
| 27889 | char *, integer *, integer *, integer *, integer *, integer *, |
| 27890 | real *, real *, real *, integer *, real *, integer *, real *, |
| 27891 | integer *, real *, integer *), slasdt_(integer *, integer |
| 27892 | *, integer *, integer *, integer *, integer *, integer *), |
| 27893 | slaset_(char *, integer *, integer *, real *, real *, real *, |
| 27894 | integer *); |
| 27895 | static integer smlszp; |
| 27896 | |
| 27897 | |
| 27898 | /* |
| 27899 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 27900 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 27901 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 27902 | June 2010 |
| 27903 | |
| 27904 | |
| 27905 | Purpose |
| 27906 | ======= |
| 27907 | |
| 27908 | Using a divide and conquer approach, SLASDA computes the singular |
| 27909 | value decomposition (SVD) of a real upper bidiagonal N-by-M matrix |
| 27910 | B with diagonal D and offdiagonal E, where M = N + SQRE. The |
| 27911 | algorithm computes the singular values in the SVD B = U * S * VT. |
| 27912 | The orthogonal matrices U and VT are optionally computed in |
| 27913 | compact form. |
| 27914 | |
| 27915 | A related subroutine, SLASD0, computes the singular values and |
| 27916 | the singular vectors in explicit form. |
| 27917 | |
| 27918 | Arguments |
| 27919 | ========= |