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


SYNOPSIS

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

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

           DOUBLE         PRECISION RHO

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

           DOUBLE         PRECISION  D( * ), DLAMDA( * ), GIVNUM(
                          2, * ), W( * ), Z( * )

           COMPLEX*16     Q( LDQ, * ), Q2( LDQ2, * )


PURPOSE

       ZLAED8 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

       K      (output) INTEGER
              Contains the number  of  non-deflated  eigenvalues.
              This  is 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 unitary matrix used to reduce
              the dense or band matrix to tridiagonal form.  QSIZ
              >= N if ICOMPQ = 1.

       Q      (input/output) COMPLEX*16 array, dimension (LDQ,N)
              On  entry,  Q contains the eigenvectors of the par­
              tially 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.

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

       D      (input/output) DOUBLE PRECISION array, dimension
              (N)
              On entry, D contains the  eigenvalues  of  the  two
              submatrices  to  be  combined.  On exit, D contains
              the trailing (N-K) updated eigenvalues (those which
              were deflated) sorted into increasing order.

       RHO    (input/output) DOUBLE PRECISION
              Contains  the  off diagonal element associated with
              the rank-1 cut which originally split the two  sub­
              matrices  which  are  now  being recombined. RHO is
              modified  during  the  computation  to  the   value
              required by DLAED3.

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

       Z      (input) DOUBLE PRECISION array, dimension (N)
              On  input  this vector contains the updating vector
              (the last row of the first  sub-eigenvector  matrix
              and  the  first  row  of the second sub-eigenvector
              matrix).  The contents of Z  are  destroyed  during
              the updating process.

              DLAMDA  (output)  DOUBLE PRECISION array, dimension
              (N) Contains a copy  of  the  first  K  eigenvalues
              which  will  be  used by DLAED3 to form the secular
              equation.

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

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

       W      (output) DOUBLE PRECISION array, dimension (N)
              This will hold the first  k  values  of  the  final
              deflation-altered  z-vector  and  will be passed to
              DLAED3.

       INDXP  (workspace) INTEGER array, dimension (N)
              This will contain the  permutation  used  to  place
              deflated  values  of  D at the end of the array. On
              output INDXP(1:K)
              points to the nondeflated D-values and INDXP(K+1:N)


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

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

       PERM   (output) INTEGER array, dimension (N)
              Contains the permutations (from deflation and sort­
              ing) to be applied to each eigenblock.

              GIVPTR  (output)  INTEGER  Contains  the  number of
              Givens rotations which took place in this  subprob­
              lem.

              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)  DOUBLE PRECISION array, dimension
              (2, N) Each number indicates the S value to be used
              in the corresponding Givens rotation.

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


Man(1) output converted with man2html