DSTEIN2(3)    ScaLAPACK routine of NEC Numeric Library Collection   DSTEIN2(3)



NAME
       DSTEIN2  -  compute  the  eigenvectors  of a real symmetric tridiagonal
       matrix T corresponding to specified eigenvalues, using  inverse  itera-
       tion

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

           INTEGER         INFO, LDZ, M, N

           DOUBLE          PRECISION ORFAC

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

           DOUBLE          PRECISION D( * ), E( * ), W( * ),  WORK(  *  ),  Z(
                           LDZ, * )

PURPOSE
       DSTEIN2  computes  the  eigenvectors  of  a  real symmetric tridiagonal
       matrix T corresponding to specified eigenvalues, using  inverse  itera-
       tion.  The maximum number of iterations allowed for each eigenvector is
       specified by an internal parameter MAXITS (currently set to 5).


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

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

       E       (input) DOUBLE PRECISION array, dimension (N)
               The (n-1) subdiagonal elements of the tridiagonal matrix T,  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) 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 DSTEBZ with  ORDER
               = 'B' is expected here. )

       IBLOCK  (input) INTEGER array, dimension (N)
               The  submatrix indices associated with the corresponding eigen-
               values in W; IBLOCK(i)=1 if  eigenvalue  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  DSTEBZ  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 DSTEBZ is expected here. )

       ORFAC   (input) DOUBLE PRECISION
               ORFAC  specifies  which  eigenvectors should be orthogonalized.
               Eigenvectors that correspond to eigenvalues  which  are  within
               ORFAC*||T|| of each other are to be orthogonalized.

       Z       (output) DOUBLE PRECISION array, dimension (LDZ, M)
               The computed eigenvectors.  The eigenvector associated with the
               eigenvalue W(i) is stored in the i-th column of Z.  Any  vector
               which  fails  to  converge  is set to its current iterate after
               MAXITS iterations.

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

       WORK    (workspace) DOUBLE PRECISION 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 illegal 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.

       EXTRA   INTEGER, default = 2
               The  number of iterations performed after norm growth criterion
               is satisfied, should be at least 1.



ScaLAPACK routine               31 October 2017                     DSTEIN2(3)