Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?larre2a
Given a tridiagonal matrix, sets small off-diagonal elements to zero and for each unreduced block, finds base representations and eigenvalues.
Syntax
call slarre2a ( range , n , vl , vu , il , iu , d , e , e2 , rtol1 , rtol2 , spltol , nsplit , isplit , m , dol , dou , needil , neediu , w , werr , wgap , iblock , indexw , gers , sdiam , pivmin , work , iwork , minrgp , info )
call dlarre2a ( range , n , vl , vu , il , iu , d , e , e2 , rtol1 , rtol2 , spltol , nsplit , isplit , m , dol , dou , needil , neediu , w , werr , wgap , iblock , indexw , gers , sdiam , pivmin , work , iwork , minrgp , info )
Include Files
mkl_scalapack.h
Description
To find the desired eigenvalues of a given real symmetric tridiagonal matrix T , ?larre2a sets any “small” off-diagonal elements to zero, and for each unreduced block Ti , it finds
a suitable shift at one end of the block’s spectrum,
the base representation, Ti - σiI = LiDiLiT , and
eigenvalues of each LiDiLiT .
Product and Performance Information Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex . Notice revision #20201201
Input Parameters
- range
-
CHARACTER = ‘A’: (“All”) all eigenvalues will be found. = ‘V’: (“Value”) all eigenvalues in the half-open interval ( vl , vu ] will be found.
= ‘I’: (“Index”) the il -th through iu -th eigenvalues (of the entire matrix) will be found.
- n
-
INTEGER The order of the matrix. n > 0.
- vl , vu
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a If range =’V’, the lower and upper bounds for the eigenvalues. Eigenvalues less than or equal to vl , or greater than vu , will not be returned. vl < vu . If range =’I’ or =’A’, ?larre2a computes bounds on the desired part of the spectrum.
- il , iu
-
INTEGER
If range =’I’, the indices (in ascending order) of the smallest and largest eigenvalues to be returned .
1 ≤ il ≤ iu ≤ n .
- d
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n On entry, the n diagonal elements of the tridiagonal matrix T .
- e
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n
The first ( n -1) entries contain the subdiagonal elements of the tridiagonal matrix T ; e ( n ) need not be set.
- e2
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n
The first ( n -1) entries contain the squares of the subdiagonal elements of the tridiagonal matrix T ; e2 ( n ) need not be set.
- rtol1 , rtol2
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Parameters for bisection. An interval [ left , right ] has converged if right - left < max( rtol1 * gap , rtol2 *max(| left`|, | :code:`right | ) )
- spltol
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a The threshold for splitting.
- dol , dou
-
INTEGER If the user wants to work on only a selected part of the representation tree, he can specify an index range dol : dou . Otherwise, the setting dol =1, dou = n should be applied. Note that dol and dou refer to the order in which the eigenvalues are stored in w .
- work
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Workspace array of size 6* n
- iwork
-
INTEGER Workspace array of size 5* n
- minrgp
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a The minimum relative gap threshold to decide whether an eigenvalue or a cluster boundary is reached.
OUTPUT Parameters
- vl , vu
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a If range =’V’, the lower and upper bounds for the eigenvalues. Eigenvalues less than or equal to vl , or greater than vu , are not returned. vl < vu . If range =’I’ or range =’A’, ?larre2a computes bounds on the desired part of the spectrum.
- d
-
The n diagonal elements of the diagonal matrices Di .
e
e contains the subdiagonal elements of the unit bidiagonal matrices Li . The entries e ( isplit ( i ) ), 1 ≤ i ≤ nsplit , contain the base points σi on output .
e2
The entries e2 ( isplit ( i ) ), 1 ≤ i ≤ nsplit have been set to zero.
- nsplit
-
INTEGER The number of blocks T splits into. 1 ≤ nsplit ≤ n .
- isplit
-
INTEGER Array of size 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., and the nsplit -th block consists of rows/columns isplit ( nsplit -1)+1 through isplit ( nsplit )= n . The first block consists of rows/columns 1 to isplit [0], the second of rows/columns isplit [0]+1 through isplit [1], etc., and the nsplit -th block consists of rows/columns isplit [ nsplit -2]+1 through isplit [ nsplit-1 ]= n .
- m
-
The total number of eigenvalues (of all LiDiLiT ) found.
- needil , neediu
-
The indices of the leftmost and rightmost eigenvalues of the root node RRR which are needed to accurately compute the relevant part of the representation tree.
- w
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n The first m elements contain the eigenvalues. The eigenvalues of each of the blocks, LiDiLiT , are sorted in ascending order ( ?larre2a may use the remaining n - m elements as workspace).
Note that immediately after exiting this routine , only the eigenvalues from position dol : dou in w rely on this processor because the eigenvalue computation is done in parallel.
- werr
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n The error bound on the corresponding eigenvalue in w .
Note that immediately after exiting this routine , only the uncertainties from position dol : dou in werr are reliable on this processor because the eigenvalue computation is done in parallel.
- wgap
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size n The separation from the right neighbor eigenvalue in w . The gap is only with respect to the eigenvalues of the same block as each block has its own representation tree. Exception: at the right end of a block we store the left gap
Note that immediately after exiting this routine , only the gaps from position dol : dou in wgap are reliable on this processor because the eigenvalue computation is done in parallel.
iblock
INTEGER Array of size 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, iblock ( i )=2 if w ( i ) belongs to the second block, and so on .
indexw
INTEGER Array of size 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 10th eigenvalue in block 2 .
- gers
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a Array of size 2* n
The n Gerschgorin intervals (the i -th Gerschgorin interval is ( gers (2* i -1), gers (2* i )) ).
- pivmin
-
REAL for slarre2a DOUBLE PRECISION for dlarre2a The minimum pivot in the sturm sequence for T .
- info
-
INTEGER = 0: successful exit > 0: A problem occurred in ?larre2a .
< 0: One of the called subroutine s signaled an internal problem. Needs inspection of the corresponding parameter info for further information.
=-1: Problem in ?larrd2 (Computes the eigenvalues of a symmetric tridiagonal matrix to suitable accuracy.) . =-2: Not enough internal iterations to find base representation. =-3: Problem in ?larrb2 (Provides limited bisection to locate eigenvalues for more accuracy.) when computing the refined root representation. =-4: Problem in ?larrb2 when preforming bisection on the desired part of the spectrum. = -9 Problem: m < dou - dol +1, that is the code found fewer eigenvalues than it was supposed to.