CSTEIN  -  compute  the  eigenvectors  of a real symmetric
       tridiagonal matrix T corresponding to specified  eigenval­
       ues, using inverse iteration


SYNOPSIS

       SUBROUTINE CSTEIN( N,  D, E, M, W, IBLOCK, ISPLIT, Z, LDZ,
                          WORK, IWORK, IFAIL, INFO )

           INTEGER        INFO, LDZ, M, N

           INTEGER        IBLOCK( * ), IFAIL( * ), ISPLIT(  *  ),
                          IWORK( * )

           REAL           D( * ), E( * ), W( * ), WORK( * )

           COMPLEX        Z( LDZ, * )


PURPOSE

       CSTEIN  computes  the  eigenvectors  of  a  real symmetric
       tridiagonal matrix T corresponding to specified  eigenval­
       ues, using inverse iteration.  The maximum number of iter­
       ations allowed for each eigenvector  is  specified  by  an
       internal parameter MAXITS (currently set to 5).

       Although  the  eigenvectors are real, they are stored in a
       complex array, which may be passed to CUNMTR or CUPMTR for
       back
       transformation  to the eigenvectors of a complex Hermitian
       matrix which was reduced to tridiagonal form.


ARGUMENTS

       N       (input) INTEGER
               The order of the matrix.  N >= 0.

       D       (input) REAL array, dimension (N)
               The n diagonal elements of the tridiagonal  matrix
               T.

       E       (input) REAL array, dimension (N)
               The  (n-1) subdiagonal elements of the tridiagonal
               matrix T, stored in elements 1 to N-1;  E(N)  need
               not be set.

       M       (input) INTEGER
               The number of eigenvectors to be found.  0 <= M <=
               N.

       W       (input) REAL array, dimension (N)
               The first M elements of W contain the  eigenvalues
               for  which  eigenvectors  are to be computed.  The
               eigenvalues should be grouped by  split-off  block

               block.  ( The output  array  W  from  SSTEBZ  with
               ORDER = 'B' is expected here. )

       IBLOCK  (input) INTEGER array, dimension (N)
               The  submatrix  indices associated with the corre­
               sponding eigenvalues in W; IBLOCK(i)=1  if  eigen­
               value W(i) belongs to the first submatrix from the
               top, =2 if W(i) belongs to the  second  submatrix,
               etc.   (  The  output  array IBLOCK from SSTEBZ is
               expected here. )

       ISPLIT  (input) INTEGER array, dimension (N)
               The splitting points, at which T  breaks  up  into
               submatrices.   The  first  submatrix  consists  of
               rows/columns 1 to  ISPLIT(  1  ),  the  second  of
               rows/columns  ISPLIT(  1  )+1 through ISPLIT( 2 ),
               etc.  ( The output array  ISPLIT  from  SSTEBZ  is
               expected here. )

       Z       (output) COMPLEX array, dimension (LDZ, M)
               The  computed eigenvectors.  The eigenvector asso­
               ciated with the eigenvalue W(i) is stored  in  the
               i-th  column of Z.  Any vector which fails to con­
               verge is set to its current iterate  after  MAXITS
               iterations.   The imaginary parts of the eigenvec­
               tors are set to zero.

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

       WORK    (workspace) REAL array, dimension (5*N)

       IWORK   (workspace) INTEGER array, dimension (N)

       IFAIL   (output) INTEGER array, dimension (M)
               On  normal  exit,  all elements of IFAIL are zero.
               If one or more eigenvectors fail to converge after
               MAXITS  iterations,  then their indices are stored
               in array IFAIL.

       INFO    (output) INTEGER
               = 0: successful exit
               < 0: if INFO = -i, the i-th argument had an  ille­
               gal value
               >  0:  if  INFO = i, then i eigenvectors failed to
               converge in MAXITS iterations.  Their indices  are
               stored in array IFAIL.


PARAMETERS

       MAXITS  INTEGER, default = 5
               The maximum number of iterations performed.

               The  number  of  iterations  performed  after norm
               growth criterion is satisfied, should be at  least
               1.


Man(1) output converted with man2html