Subroutine */
| 26734 | } /* slasd5_ */ |
| 26735 | |
| 26736 | /* Subroutine */ int slasd6_(integer *icompq, integer *nl, integer *nr, |
| 26737 | integer *sqre, real *d__, real *vf, real *vl, real *alpha, real *beta, |
| 26738 | integer *idxq, integer *perm, integer *givptr, integer *givcol, |
| 26739 | integer *ldgcol, real *givnum, integer *ldgnum, real *poles, real * |
| 26740 | difl, real *difr, real *z__, integer *k, real *c__, real *s, real * |
| 26741 | work, integer *iwork, integer *info) |
| 26742 | { |
| 26743 | /* System generated locals */ |
| 26744 | integer givcol_dim1, givcol_offset, givnum_dim1, givnum_offset, |
| 26745 | poles_dim1, poles_offset, i__1; |
| 26746 | real r__1, r__2; |
| 26747 | |
| 26748 | /* Local variables */ |
| 26749 | static integer i__, m, n, n1, n2, iw, idx, idxc, idxp, ivfw, ivlw; |
| 26750 | extern /* Subroutine */ int scopy_(integer *, real *, integer *, real *, |
| 26751 | integer *), slasd7_(integer *, integer *, integer *, integer *, |
| 26752 | integer *, real *, real *, real *, real *, real *, real *, real *, |
| 26753 | real *, real *, real *, integer *, integer *, integer *, integer |
| 26754 | *, integer *, integer *, integer *, real *, integer *, real *, |
| 26755 | real *, integer *), slasd8_(integer *, integer *, real *, real *, |
| 26756 | real *, real *, real *, real *, integer *, real *, real *, |
| 26757 | integer *); |
| 26758 | static integer isigma; |
| 26759 | extern /* Subroutine */ int xerbla_(char *, integer *), slascl_( |
| 26760 | char *, integer *, integer *, real *, real *, integer *, integer * |
| 26761 | , real *, integer *, integer *), slamrg_(integer *, |
| 26762 | integer *, real *, integer *, integer *, integer *); |
| 26763 | static real orgnrm; |
| 26764 | |
| 26765 | |
| 26766 | /* |
| 26767 | -- LAPACK auxiliary routine (version 3.2.2) -- |
| 26768 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 26769 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 26770 | June 2010 |
| 26771 | |
| 26772 | |
| 26773 | Purpose |
| 26774 | ======= |
| 26775 | |
| 26776 | SLASD6 computes the SVD of an updated upper bidiagonal matrix B |
| 26777 | obtained by merging two smaller ones by appending a row. This |
| 26778 | routine is used only for the problem which requires all singular |
| 26779 | values and optionally singular vector matrices in factored form. |
| 26780 | B is an N-by-M matrix with N = NL + NR + 1 and M = N + SQRE. |
| 26781 | A related subroutine, SLASD1, handles the case in which all singular |
| 26782 | values and singular vectors of the bidiagonal matrix are desired. |
| 26783 | |
| 26784 | SLASD6 computes the SVD as follows: |
| 26785 | |
| 26786 | ( D1(in) 0 0 0 ) |
| 26787 | B = U(in) * ( Z1' a Z2' b ) * VT(in) |
| 26788 | ( 0 0 D2(in) 0 ) |
| 26789 | |
| 26790 | = U(out) * ( D(out) 0) * VT(out) |
| 26791 | |
| 26792 | where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M |
| 26793 | with ALPHA and BETA in the NL+1 and NL+2 th entries and zeros |