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


SYNOPSIS

       SUBROUTINE DLASD9( ICOMPQ, LDU, K, D,  Z,  VF,  VL,  DIFL,
                          DIFR, DSIGMA, WORK, INFO )

           INTEGER        ICOMPQ, INFO, K, LDU

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


PURPOSE

       DLASD9  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 singular  vectors  of
       the original bidiagonal matrix.

       DLASD9 is called from DLASD7.


ARGUMENTS

       ICOMPQ  (input) INTEGER
               Specifies  whether singular vectors are to be com­
               puted in factored form in the calling routine:

               ICOMPQ =  0              Compute  singular  values
               only.

               ICOMPQ  =  1              Compute  singular vector
               matrices in factored form also.   K        (input)
               INTEGER  The number of terms in the rational func­
               tion to be solved by DLASD4.  K >= 1.

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

       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.

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

               sion(K)
               On  entry, VF contains  information passed through
               SBEDE8.f On exit, VF contains the first  K  compo­
               nents  of the first components of all right singu­
               lar vectors of the bidiagonal matrix.

       VL      (input/output) DOUBLE PRECISION array, dimen­
               sion(K)
               On  entry, VL contains  information passed through
               SBEDE8.f 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 (LDU, 2) if ICOMPQ =1 and dimension  (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.

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

       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