SLAED8 - merge the two sets of eigenvalues together into a
       single sorted set


SYNOPSIS

       SUBROUTINE SLAED8( ICOMPQ, K, N, QSIZ, D, Q,  LDQ,  INDXQ,
                          RHO,  CUTPNT,  Z,  DLAMDA, Q2, LDQ2, W,
                          PERM, GIVPTR,  GIVCOL,  GIVNUM,  INDXP,
                          INDX, INFO )

           INTEGER        CUTPNT,  GIVPTR,  ICOMPQ, INFO, K, LDQ,
                          LDQ2, N, QSIZ

           REAL           RHO

           INTEGER        GIVCOL( 2, * ), INDX( * ), INDXP( *  ),
                          INDXQ( * ), PERM( * )

           REAL           D( * ), DLAMDA( * ), GIVNUM( 2, * ), Q(
                          LDQ, * ), Q2( LDQ2, * ), W( * ), Z( * )


PURPOSE

       SLAED8  merges the two sets of eigenvalues together into a
       single sorted set. Then it tries to deflate  the  size  of
       the  problem.  There  are  two ways in which deflation can
       occur:  when two or more eigenvalues are close together or
       if there is a tiny element in the Z vector.  For each such
       occurrence the order of the related secular equation prob­
       lem is reduced by one.


ARGUMENTS

       ICOMPQ  (input) INTEGER
               = 0:  Compute eigenvalues only.
               =  1:  Compute eigenvectors of original dense sym­
               metric matrix also.   On  entry,  Q  contains  the
               orthogonal  matrix  used  to  reduce  the original
               matrix to tridiagonal form.

       K      (output) INTEGER
              The number of  non-deflated  eigenvalues,  and  the
              order of the related secular equation.

       N      (input) INTEGER
              The  dimension of the symmetric tridiagonal matrix.
              N >= 0.

       QSIZ   (input) INTEGER
              The dimension of  the  orthogonal  matrix  used  to
              reduce  the  full matrix to tridiagonal form.  QSIZ
              >= N if ICOMPQ = 1.

       D      (input/output) REAL array, dimension (N)
              On entry, the eigenvalues of the two submatrices to

              eigenvalues (those which were deflated) sorted into
              increasing order.

       Q      (input/output) REAL array, dimension (LDQ,N)
              If  ICOMPQ = 0, Q is not referenced.  Otherwise, on
              entry, Q contains the eigenvectors of the partially
              solved  system which has been previously updated in
              matrix  multiplies  with  other  partially   solved
              eigensystems.  On exit, Q contains the trailing (N-
              K) updated eigenvectors (those which were deflated)
              in its last N-K columns.

       LDQ    (input) INTEGER
              The  leading  dimension  of  the  array  Q.  LDQ >=
              max(1,N).

       INDXQ  (input) INTEGER array, dimension (N)
              The permutation which separately sorts the two sub-
              problems in D into ascending order.  Note that ele­
              ments in the second half of this  permutation  must
              first have CUTPNT added to their values in order to
              be accurate.

       RHO    (input/output) REAL
              On entry, the off-diagonal element associated  with
              the  rank-1 cut which originally split the two sub­
              matrices which are now being recombined.  On  exit,
              RHO  has  been  modified  to  the value required by
              SLAED3.

              CUTPNT (input) INTEGER The  location  of  the  last
              eigenvalue  in the leading sub-matrix.  min(1,N) <=
              CUTPNT <= N.

       Z      (input) REAL array, dimension (N)
              On entry, Z contains the updating vector (the  last
              row  of  the  first  sub-eigenvector matrix and the
              first row of the  second  sub-eigenvector  matrix).
              On  exit,  the  contents  of Z are destroyed by the
              updating process.

              DLAMDA (output) REAL array, dimension (N) A copy of
              the  first  K  eigenvalues  which  will  be used by
              SLAED3 to form the secular equation.

       Q2     (output) REAL array, dimension (LDQ2,N)
              If ICOMPQ = 0, Q2 is not referenced.  Otherwise,  a
              copy of the first K eigenvectors which will be used
              by SLAED7 in a matrix multiply  (SGEMM)  to  update
              the new eigenvectors.

       LDQ2   (input) INTEGER
              The  leading  dimension  of  the array Q2.  LDQ2 >=


       W      (output) REAL array, dimension (N)
              The first k values of the  final  deflation-altered
              z-vector and will be passed to SLAED3.

       PERM   (output) INTEGER array, dimension (N)
              The permutations (from deflation and sorting) to be
              applied to each eigenblock.

              GIVPTR (output) INTEGER The number of Givens  rota­
              tions which took place in this subproblem.

              GIVCOL  (output)  INTEGER  array,  dimension (2, N)
              Each pair of numbers indicates a pair of columns to
              take place in a Givens rotation.

              GIVNUM  (output)  REAL array, dimension (2, N) Each
              number indicates the S value to be used in the cor­
              responding Givens rotation.

       INDXP  (workspace) INTEGER array, dimension (N)
              The  permutation used to place deflated values of D
              at the end of the array.  INDXP(1:K) points to  the
              nondeflated D-values
              and  INDXP(K+1:N)  points to the deflated eigenval­
              ues.

       INDX   (workspace) INTEGER array, dimension (N)
              The permutation used to sort the contents of D into
              ascending order.

       INFO   (output) INTEGER
              = 0:  successful exit.
              <  0:  if INFO = -i, the i-th argument had an ille­
              gal value.


FURTHER DETAILS

       Based on contributions by
          Jeff Rutter, Computer Science Division,  University  of
       California
          at Berkeley, USA


Man(1) output converted with man2html