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



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

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

           INTEGER         INFO, LDZ, M, N

           REAL            ORFAC

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

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

PURPOSE
       SSTEIN2 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) 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, 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 and ordered from smallest to largest
               within  the 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 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 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. )

       ORFAC   (input) REAL
               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) REAL 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) 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 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                     SSTEIN2(3)