Developer Reference for Intel® oneAPI Math Kernel Library for C
?larre2a
Given a tridiagonal matrix, sets small off-diagonal elements to zero and for each unreduced block, finds base representations and eigenvalues.
Syntax
void slarre2a(char *range, MKL_INT *n, float *vl, float *vu, MKL_INT *il, MKL_INT *iu,
float *d, float *e, float *e2, float *rtol1, float *rtol2, float *spltol,
MKL_INT *nsplit, MKL_INT *isplit, MKL_INT *m, MKL_INT *dol, MKL_INT *dou,
MKL_INT *needil, MKL_INT *neediu, float *w, float *werr, float *wgap,
MKL_INT *iblock, MKL_INT *indexw, float *gers, float *sdiam, float *pivmin,
float *work, MKL_INT *iwork, float *minrgp, MKL_INT *info);
void dlarre2a(char *range, MKL_INT *n, double *vl, double *vu, MKL_INT *il, MKL_INT *iu,
double *d, double *e, double *e2, double *rtol1, double *rtol2,
double *spltol, MKL_INT *nsplit, MKL_INT *isplit, MKL_INT *m, MKL_INT *dol,
MKL_INT *dou, MKL_INT *needil, MKL_INT *neediu, double *w, double *werr,
double *wgap, MKL_INT *iblock, MKL_INT *indexw, double *gers, double *sdiam,
double *pivmin, double *work, MKL_INT *iwork, double *minrgp,
MKL_INT *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”) eigenvalues of the entire matrix with the indices in a given range 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 eigenvalue, to be returned in w [ il -1], and largest eigenvalue, to be returned in w [ iu -1] .
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 -1] 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 -1] 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 ]], 0 ≤ i < nsplit , contain the base points σi+1 on output .
e2
The entries e2 [ isplit [ i ]], 0 ≤ 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 function , only the eigenvalues in w with indices in range dol -1: dou -1 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 function , only the uncertainties in werr with indices in range dol -1: dou -1 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 function , only the gaps in wgap with indices in range dol -1: dou -1 are reliable on this processor because the eigenvalue computation is done in parallel.
iblock
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
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 +1)-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 -2], gers [2* i -1]) ).
- 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 function 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.