Subroutine */
| 26828 | } /* dlasd5_ */ |
| 26829 | |
| 26830 | /* Subroutine */ int dlasd6_(integer *icompq, integer *nl, integer *nr, |
| 26831 | integer *sqre, doublereal *d__, doublereal *vf, doublereal *vl, |
| 26832 | doublereal *alpha, doublereal *beta, integer *idxq, integer *perm, |
| 26833 | integer *givptr, integer *givcol, integer *ldgcol, doublereal *givnum, |
| 26834 | integer *ldgnum, doublereal *poles, doublereal *difl, doublereal * |
| 26835 | difr, doublereal *z__, integer *k, doublereal *c__, doublereal *s, |
| 26836 | doublereal *work, integer *iwork, integer *info) |
| 26837 | { |
| 26838 | /* System generated locals */ |
| 26839 | integer givcol_dim1, givcol_offset, givnum_dim1, givnum_offset, |
| 26840 | poles_dim1, poles_offset, i__1; |
| 26841 | doublereal d__1, d__2; |
| 26842 | |
| 26843 | /* Local variables */ |
| 26844 | static integer i__, m, n, n1, n2, iw, idx, idxc, idxp, ivfw, ivlw; |
| 26845 | extern /* Subroutine */ int dcopy_(integer *, doublereal *, integer *, |
| 26846 | doublereal *, integer *), dlasd7_(integer *, integer *, integer *, |
| 26847 | integer *, integer *, doublereal *, doublereal *, doublereal *, |
| 26848 | doublereal *, doublereal *, doublereal *, doublereal *, |
| 26849 | doublereal *, doublereal *, doublereal *, integer *, integer *, |
| 26850 | integer *, integer *, integer *, integer *, integer *, doublereal |
| 26851 | *, integer *, doublereal *, doublereal *, integer *), dlasd8_( |
| 26852 | integer *, integer *, doublereal *, doublereal *, doublereal *, |
| 26853 | doublereal *, doublereal *, doublereal *, integer *, doublereal *, |
| 26854 | doublereal *, integer *), dlascl_(char *, integer *, integer *, |
| 26855 | doublereal *, doublereal *, integer *, integer *, doublereal *, |
| 26856 | integer *, integer *), dlamrg_(integer *, integer *, |
| 26857 | doublereal *, integer *, integer *, integer *); |
| 26858 | static integer isigma; |
| 26859 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 26860 | static doublereal orgnrm; |
| 26861 | |
| 26862 | |
| 26863 | /* |
| 26864 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 26865 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 26866 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 26867 | June 2010 |
| 26868 | |
| 26869 | |
| 26870 | Purpose |
| 26871 | ======= |
| 26872 | |
| 26873 | DLASD6 computes the SVD of an updated upper bidiagonal matrix B |
| 26874 | obtained by merging two smaller ones by appending a row. This |
| 26875 | routine is used only for the problem which requires all singular |
| 26876 | values and optionally singular vector matrices in factored form. |
| 26877 | B is an N-by-M matrix with N = NL + NR + 1 and M = N + SQRE. |
| 26878 | A related subroutine, DLASD1, handles the case in which all singular |
| 26879 | values and singular vectors of the bidiagonal matrix are desired. |
| 26880 | |
| 26881 | DLASD6 computes the SVD as follows: |
| 26882 | |
| 26883 | ( D1(in) 0 0 0 ) |
| 26884 | B = U(in) * ( Z1' a Z2' b ) * VT(in) |
| 26885 | ( 0 0 D2(in) 0 ) |
| 26886 | |
| 26887 | = U(out) * ( D(out) 0) * VT(out) |