Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?larrv
Computes the eigenvectors of the tridiagonal matrix T = L*D*L:code:`T` given L , D and the eigenvalues of L*D*L:code:`T` .
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
slarrv dlarrv clarrv zlarrv
The routine ?larrv computes the eigenvectors of the tridiagonal matrix T = L*D*L:code:`T` given L , D and approximations to the eigenvalues of L*D*L:code:`T` .
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 :code:`iblock(i)`=2 imply that the :code:`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).
- 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 (2 i -1) through isuppz (2 i ).
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.