Visible to Intel only — GUID: GUID-8BEB8807-EB55-4818-B0A6-AF31E50F4D79
Visible to Intel only — GUID: GUID-8BEB8807-EB55-4818-B0A6-AF31E50F4D79
?larrv
Computes the eigenvectors of the tridiagonal matrix T = L*D*LT given L, D and the eigenvalues of L*D*LT.
Syntax
call slarrv( n, vl, vu, d, l, pivmin, isplit, m, dol, dou, minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, isuppz, work, iwork, info )
call dlarrv( n, vl, vu, d, l, pivmin, isplit, m, dol, dou, minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, isuppz, work, iwork, info )
call clarrv( n, vl, vu, d, l, pivmin, isplit, m, dol, dou, minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, isuppz, work, iwork, info )
call zlarrv( n, vl, vu, d, l, pivmin, isplit, m, dol, dou, minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, isuppz, work, iwork, info )
Include Files
- mkl.fi
Description
The routine ?larrv computes the eigenvectors of the tridiagonal matrix T = L*D*LT given L, D and approximations to the eigenvalues of L*D*LT.
The input eigenvalues should have been computed by slarre for real flavors (slarrv/clarrv) and by dlarre for double precision flavors (dlarre/zlarre).
Input Parameters
- n
-
INTEGER. The order of the matrix. n≥ 0.
- vl, vu
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Lower and upper bounds respectively of the interval that contains the desired eigenvalues. vl < vu. Needed to compute gaps on the left or right end of the extremal eigenvalues in the desired range.
- d
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (n). On entry, the n diagonal elements of the diagonal matrix D.
- l
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (n).
On entry, the (n-1) subdiagonal elements of the unit bidiagonal matrix L are contained in elements 1 to n-1 of L if the matrix is not splitted. At the end of each block the corresponding shift is stored as given by slarre for real flavors and by dlarre for double precision flavors.
- pivmin
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
The minimum pivot allowed in the Sturm sequence.
- isplit
-
INTEGER. Array, DIMENSION (n).
The splitting points, at which T breaks up into blocks. The first block consists of rows/columns 1 to isplit(1), the second of rows/columns isplit(1)+1 through isplit(2), etc.
- m
-
INTEGER. The total number of eigenvalues found.
0 ≤ m ≤ n. If range = 'A', m = n, and if range = 'I', m = iu - il +1.
- dol, dou
-
INTEGER.
If you want to compute only selected eigenvectors from all the eigenvalues supplied, specify an index range dol:dou. Or else apply the setting dol=1, dou=m. Note that dol and dou refer to the order in which the eigenvalues are stored in w.
If you want to compute only selected eigenpairs, then the columns dol-1 to dou+1 of the eigenvector space Z contain the computed eigenvectors. All other columns of Z are set to zero.
- minrgp, rtol1, rtol2
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Parameters for bisection. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT.LT.MAX( rtol1*gap, rtol2*max(|LEFT|,|RIGHT|) ).
- w
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (n). The first m elements of w contain the approximate 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 ?larre is expected here). These eigenvalues are set with respect to the shift of the corresponding root representation for their block.
- werr
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in w.
- wgap
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (n). The separation from the right neighbor eigenvalue in w.
- iblock
-
INTEGER. Array, DIMENSION (n).
The indices of the blocks (submatrices) associated with the corresponding eigenvalues in w; iblock(i)=1 if eigenvalue w(i) belongs to the first block from the top, =2 if w(i) belongs to the second block, etc.
- indexw
-
INTEGER. Array, DIMENSION (n).
The indices of the eigenvalues within each block (submatrix); for example, indexw(i)= 10 and iblock(i)=2 imply that the i-th eigenvalue w(i) is the 10-th eigenvalue in the second block.
- gers
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Array, DIMENSION (2*n). The n Gerschgorin intervals (the i-th Gerschgorin interval is (gers(2*i-1), gers(2*i)). The Gerschgorin intervals should be computed from the original unshifted matrix.
- ldz
-
INTEGER. The leading dimension of the output array Z. ldz≥ 1, and if jobz = 'V', ldz≥ max(1,n).
- work
-
REAL for slarrv/clarrv
DOUBLE PRECISION for dlarrv/zlarrv
Workspace array, DIMENSION (12*n).
- iwork
-
INTEGER.
Workspace array, DIMENSION (7*n).
Output Parameters
- d
-
On exit, d may be overwritten.
- l
-
On exit, l is overwritten.
- w
-
On exit, w holds the eigenvalues of the unshifted matrix.
- werr
-
On exit, werr contains refined values of its input approximations.
- wgap
-
On exit, wgap contains refined values of its input approximations. Very small gaps are changed.
- z
-
REAL for slarrv
DOUBLE PRECISION for dlarrv
COMPLEX for clarrv
DOUBLE COMPLEX for zlarrv
Array, DIMENSION (ldz, max(1,m) ).
If info = 0, the first m columns of z contain the orthonormal eigenvectors of the matrix T corresponding to the input eigenvalues, with the i-th column of z holding the eigenvector associated with w(i).
NOTE:The user must ensure that at least max(1,m) columns are supplied in the array z.
- isuppz
-
INTEGER .
Array, DIMENSION(2*max(1,m)). The support of the eigenvectors in z, that is, the indices indicating the nonzero elements in z. The i-th eigenvector is nonzero only in elements isuppz(2i-1) through isuppz(2i).
- info
-
INTEGER.
If info = 0: successful exit
If info > 0: A problem occured in ?larrv. If info = 5, the Rayleigh Quotient Iteration failed to converge to full accuracy.
If info < 0: One of the called subroutines signaled an internal problem. Inspection of the corresponding parameter info for further information is required.
If info = -1, there is a problem in ?larrb when refining a child eigenvalue;
If info = -2, there is a problem in ?larrf when computing the relatively robust representation (RRR) of a child. When a child is inside a tight cluster, it can be difficult to find an RRR. A partial remedy from the user's point of view is to make the parameter minrgp smaller and recompile. However, as the orthogonality of the computed vectors is proportional to 1/minrgp, you should be aware that you might be trading in precision when you decrease minrgp.
If info = -3, there is a problem in ?larrb when refining a single eigenvalue after the Rayleigh correction was rejected.