DLASD8 - find the square roots of the roots of the secular
       equation,


SYNOPSIS

       SUBROUTINE DLASD8( ICOMPQ, K, D, Z, VF,  VL,  DIFL,  DIFR,
                          LDDIFR, DSIGMA, WORK, INFO )

           INTEGER        ICOMPQ, INFO, K, LDDIFR

           DOUBLE         PRECISION  D(  *  ),  DIFL(  * ), DIFR(
                          LDDIFR, * ), DSIGMA( * ), VF( * ),  VL(
                          * ), WORK( * ), Z( * )


PURPOSE

       DLASD8  finds the square roots of the roots of the secular
       equation, as defined by the values in  DSIGMA  and  Z.  It
       makes  the  appropriate  calls  to DLASD4, and stores, for
       each  element in D, the distance to its two nearest  poles
       (elements  in  DSIGMA).  It also updates the arrays VF and
       VL, the first and last components of all the right  singu­
       lar vectors of the original bidiagonal matrix.

       DLASD8 is called from DLASD6.


ARGUMENTS

       ICOMPQ  (input) INTEGER
               Specifies  whether singular vectors are to be com­
               puted in factored form in the calling routine:
               = 0: Compute singular values only.
               = 1: Compute singular vectors in factored form  as
               well.

       K       (input) INTEGER
               The number of terms in the rational function to be
               solved by DLASD4.  K >= 1.

       D       (output) DOUBLE PRECISION array, dimension ( K )
               On output, D contains the updated singular values.

       Z       (input) DOUBLE PRECISION array, dimension ( K )
               The  first  K  elements  of this array contain the
               components of the deflation-adjusted updating  row
               vector.

       VF      (input/output) DOUBLE PRECISION array, dimension (
               K )
               On entry, VF contains  information passed  through
               DBEDE8.   On  exit, VF contains the first K compo­
               nents of the first components of all right  singu­
               lar vectors of the bidiagonal matrix.

               K )
               On entry, VL contains  information passed  through
               DBEDE8.   On  exit, VL contains the first K compo­
               nents of the last components of all right singular
               vectors of the bidiagonal matrix.

       DIFL    (output) DOUBLE PRECISION array, dimension ( K )
               On exit, DIFL(I) = D(I) - DSIGMA(I).

       DIFR    (output) DOUBLE PRECISION array,
               dimension  (  LDDIFR, 2 ) if ICOMPQ = 1 and dimen­
               sion ( K ) if ICOMPQ = 0.  On  exit,  DIFR(I,1)  =
               D(I)  -  DSIGMA(I+1), DIFR(K,1) is not defined and
               will not be referenced.

               If ICOMPQ = 1, DIFR(1:K,2) is an array  containing
               the  normalizing  factors  for  the right singular
               vector matrix.

       LDDIFR  (input) INTEGER
               The leading dimension of DIFR, must be at least 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.

       WORK     (workspace) DOUBLE PRECISION array, dimension at
               least 3 * K

       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