ZLARRV  -  compute  the  eigenvectors  of  the tridiagonal
       matrix T = L D L^T given L, D and the eigenvalues of  L  D
       L^T


SYNOPSIS

       SUBROUTINE ZLARRV( N,  D, L, ISPLIT, M, W, IBLOCK, GERSCH,
                          TOL, Z, LDZ, ISUPPZ, WORK, IWORK,  INFO
                          )

           INTEGER        INFO, LDZ, M, N

           DOUBLE         PRECISION TOL

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

           DOUBLE         PRECISION D( * ), GERSCH( * ), L( *  ),
                          W( * ), WORK( * )

           COMPLEX*16     Z( LDZ, * )


PURPOSE

       ZLARRV computes the eigenvectors of the tridiagonal matrix
       T = L D L^T given L, D and the eigenvalues of L D L^T. The
       input  eigenvalues should have high relative accuracy with
       respect to the entries of L and D. The desired accuracy of
       the output can be specified by the input parameter TOL.


ARGUMENTS

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

       D       (input/output) DOUBLE PRECISION array, dimension
               (N)
               On entry, the n diagonal elements of the  diagonal
               matrix D.  On exit, D may be overwritten.

       L       (input/output) DOUBLE PRECISION array, dimension
               (N-1)
               On entry, the (n-1) subdiagonal  elements  of  the
               unit  bidiagonal  matrix L in elements 1 to N-1 of
               L. L(N) need not be set. On exit, L  is  overwrit­
               ten.

       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  absolute  error  tolerance  for the eigenval­
               ues/eigenvectors.  Errors in the input eigenvalues
               must  be  bounded by TOL.  The eigenvectors output
               have residual norms bounded by TOL,  and  the  dot
               products   between   different   eigenvectors  are
               bounded by TOL. TOL must be  at  least  N*EPS*|T|,
               where  EPS is the machine precision and |T| is the
               1-norm of the tridiagonal matrix.

       M       (input) INTEGER
               The total number of eigenvalues found.  0 <= M  <=
               N.  If RANGE = 'A', M = N, and if RANGE = 'I', M =
               IU-IL+1.

       W       (input) DOUBLE PRECISION 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
               and  ordered  from  smallest to largest within the
               block ( The output array W from DLARRE is expected
               here  ).   Errors in W must be bounded by TOL (see
               above).

       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.

       Z       (output) COMPLEX*16 array, dimension (LDZ,
               max(1,M) )
               If  JOBZ  =  'V',  then  if  INFO = 0, the first M
               columns of Z contain the orthonormal  eigenvectors
               of  the  matrix  T  corresponding  to the selected
               eigenvalues, with the i-th column of Z holding the
               eigenvector  associated with W(i).  If JOBZ = 'N',
               then Z is not referenced.   Note:  the  user  must
               ensure that at least max(1,M) columns are supplied
               in the array Z; if RANGE = 'V', the exact value of
               M  is not known in advance and an upper bound must
               be used.

       LDZ     (input) INTEGER
               The leading dimension of the array Z.  LDZ  >=  1,
               and if JOBZ = 'V', LDZ >= max(1,N).

       ISUPPZ  (output) INTEGER ARRAY, dimension ( 2*max(1,M) )
               The  support  of  the eigenvectors in Z, i.e., the
               indices indicating the nonzero elements in Z.  The
               i-th  eigenvector  is  nonzero  only  in  elements
               ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i ).

               (13*N)

       IWORK   (workspace) INTEGER array, dimension (6*N)

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value
               > 0:  if INFO = 1, internal  error  in  DLARRB  if
               INFO = 2, internal error in ZSTEIN


FURTHER DETAILS

       Based on contributions by
          Inderjit Dhillon, IBM Almaden, USA
          Osni Marques, LBNL/NERSC, USA
          Ken Stanley, Computer Science Division, University of
            California at Berkeley, USA


Man(1) output converted with man2html