DLARRV(l) ) DLARRV(l)
NAME
DLARRV - 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 DLARRV( 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( * ), Z( LDZ, * )
PURPOSE
DLARRV 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 overwritten.
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) DOUBLE PRECISION
The absolute error tolerance for the eigenvalues/eigenvectors. Errors in the input eigenvalues must be bounded by TOL. The eigen-
vectors 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 corresponding eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to the first sub-
matrix from the top, =2 if W(i) belongs to the second submatrix, etc.
Z (output) DOUBLE PRECISION 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 refer-
enced. 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) DOUBLE PRECISION array, dimension (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 illegal value
> 0: if INFO = 1, internal error in DLARRB if INFO = 2, internal error in DSTEIN
FURTHER DETAILS
Based on contributions by
Inderjit Dhillon, IBM Almaden, USA
Osni Marques, LBNL/NERSC, USA
LAPACK version 3.0 15 June 2000 DLARRV(l)