DLASD3  -  find  all  the square roots of the roots of the
       secular equation, as defined by the values in D and Z


SYNOPSIS

       SUBROUTINE DLASD3( NL, NR, SQRE, K, D, Q, LDQ, DSIGMA,  U,
                          LDU,  U2,  LDU2,  VT, LDVT, VT2, LDVT2,
                          IDXC, CTOT, Z, INFO )

           INTEGER        INFO, K, LDQ, LDU, LDU2,  LDVT,  LDVT2,
                          NL, NR, SQRE

           INTEGER        CTOT( * ), IDXC( * )

           DOUBLE         PRECISION  D( * ), DSIGMA( * ), Q( LDQ,
                          * ), U( LDU, * ), U2( LDU2,  *  ),  VT(
                          LDVT, * ), VT2( LDVT2, * ), Z( * )


PURPOSE

       DLASD3 finds all the square roots of the roots of the sec­
       ular equation, as defined by the values in  D  and  Z.  It
       makes the appropriate calls to DLASD4 and then updates the
       singular vectors by matrix multiplication.

       This code makes very mild assumptions about floating point
       arithmetic. It will work on machines with a guard digit in
       add/subtract, or on those binary  machines  without  guard
       digits  which subtract like the Cray XMP, Cray YMP, Cray C
       90, or Cray 2.  It could conceivably fail  on  hexadecimal
       or  decimal  machines without guard digits, but we know of
       none.

       DLASD3 is called from DLASD1.


ARGUMENTS

       NL     (input) INTEGER
              The row dimension of the upper block.  NL >= 1.

       NR     (input) INTEGER
              The row dimension of the lower block.  NR >= 1.

       SQRE   (input) INTEGER
              = 0: the lower block is an NR-by-NR square  matrix.
              = 1: the lower block is an NR-by-(NR+1) rectangular
              matrix.

              The bidiagonal matrix has N = NL + NR + 1 rows  and
              M = N + SQRE >= N columns.

       K      (input) INTEGER
              The size of the secular equation, 1 =< K = < N.

              On  exit the square roots of the roots of the secu­
              lar equation, in ascending order.

       Q      (workspace) DOUBLE PRECISION array,
              dimension at least (LDQ,K).

       LDQ    (input) INTEGER
              The leading dimension of the array Q.  LDQ >= K.

              DSIGMA (input) DOUBLE PRECISION array, dimension(K)
              The  first K elements of this array contain the old
              roots of the deflated updating problem.  These  are
              the poles of the secular equation.

       U      (input) DOUBLE PRECISION array, dimension (LDU, N)
              The  last  N - K columns of this matrix contain the
              deflated left singular vectors.

       LDU    (input) INTEGER
              The leading dimension of the array U.  LDU >= N.

       U2     (input) DOUBLE PRECISION array, dimension (LDU2, N)
              The first K columns of this matrix contain the non-
              deflated left singular vectors for the split  prob­
              lem.

       LDU2   (input) INTEGER
              The  leading dimension of the array U2.  LDU2 >= N.

       VT     (input) DOUBLE PRECISION array, dimension (LDVT, M)
              The  last M - K columns of VT' contain the deflated
              right singular vectors.

       LDVT   (input) INTEGER
              The leading dimension of the array VT.  LDVT >=  N.

       VT2    (input) DOUBLE PRECISION array, dimension (LDVT2,
              N)
              The first  K  columns  of  VT2'  contain  the  non-
              deflated right singular vectors for the split prob­
              lem.

       LDVT2  (input) INTEGER
              The leading dimension of the array VT2.   LDVT2  >=
              N.

       IDXC   (input) INTEGER array, dimension ( N )
              The  permutation  used  to arrange the columns of U
              (and rows of VT)  into  three  groups:   the  first
              group  contains  non-zero entries only at and above
              (or before) NL +1;  the  second  contains  non-zero
              entries  only at and below (or after) NL+2; and the
              third is dense. The first column of U and  the  row


              The  rows  of  the singular vectors found by DLASD4
              must be likewise permuted before the matrix  multi­
              plies can take place.

       CTOT   (input) INTEGER array, dimension ( 4 )
              A count of the total number of the various types of
              columns in U (or rows in VT), as described in IDXC.
              The fourth column type is any column which has been
              deflated.

       Z      (input) DOUBLE PRECISION array, dimension (K)
              The first K elements of this array contain the com­
              ponents of the deflation-adjusted updating row vec­
              tor.

       INFO   (output) INTEGER
              = 0:  successful exit.
              < 0:  if INFO = -i, the i-th argument had an  ille­
              gal value.
              >  0:   if INFO = 1, an singular value did not con­
              verge


FURTHER DETAILS

       Based on contributions by
          Ming Gu and Huan Ren, Computer Science  Division,  Uni­
       versity of
          California at Berkeley, USA


Man(1) output converted with man2html