SSTEIN2 - compute the eigenvectors of a real symmetric tridiagonal
matrix T corresponding to specified eigenvalues, using inverse iteration
- 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, *
)
SSTEIN2 computes the eigenvectors of a real symmetric tridiagonal
matrix T corresponding to specified eigenvalues, using inverse
iteration.
The maximum number of iterations allowed for each eigenvector is
specified by an internal parameter MAXITS (currently set to 5).
- 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 eigenvalues 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.
- 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.