SLARRV - 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 SLARRV( N, D, L, ISPLIT, M, W, IBLOCK, GERSCH,
TOL, Z, LDZ, ISUPPZ, WORK, IWORK, INFO
)
INTEGER INFO, LDZ, M, N
REAL TOL
INTEGER IBLOCK( * ), ISPLIT( * ), ISUPPZ( * ),
IWORK( * )
REAL D( * ), GERSCH( * ), L( * ), W( * ),
WORK( * ), Z( LDZ, * )
PURPOSE
SLARRV 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) REAL array, dimension (N)
On entry, the n diagonal elements of the diagonal
matrix D. On exit, D may be overwritten.
L (input/output) REAL 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.
TOL (input) REAL
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
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) 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 SLARRE 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) REAL 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 ).
WORK (workspace) REAL array, dimension (13*N)
IWORK (workspace) INTEGER array, dimension (6*N)
INFO (output) INTEGER
= 0: successful exit
gal value
> 0: if INFO = 1, internal error in SLARRB if
INFO = 2, internal error in SSTEIN
FURTHER DETAILS
Based on contributions by
Inderjit Dhillon, IBM Almaden, USA
Osni Marques, LBNL/NERSC, USA
Man(1) output converted with
man2html