Developer Reference for Intel® oneAPI Math Kernel Library for C
?larrb2
Provides limited bisection to locate eigenvalues for more accuracy.
Syntax
void slarrb2 ( MKL_INT*n , float*d , float*lld , MKL_INT*ifirst , MKL_INT*ilast , float*rtol1 , float*rtol2 , MKL_INT*offset , float*w , float*wgap , float*werr , float*work , MKL_INT*iwork , float*pivmin , float*lgpvmn , float*lgspdm , MKL_INT*twist , MKL_INT*info );
void dlarrb2 ( MKL_INT*n , double*d , double*lld , MKL_INT*ifirst , MKL_INT*ilast , double*rtol1 , double*rtol2 , MKL_INT*offset , double*w , double*wgap , double*werr , double*work , MKL_INT*iwork , double*pivmin , double*lgpvmn , double*lgspdm , MKL_INT*twist , MKL_INT*info );
Include Files
mkl_scalapack.h
Description
Given the relatively robust representation (RRR) LDLT , ?larrb2 does “limited” bisection to refine the eigenvalues of LDLT , w ( ifirst - offset ) through w ( ilast - offset ), with indices in a given range to more accuracy. Initial guesses for these eigenvalues are input in w , the corresponding estimate of the error in these guesses and their gaps are input in werr and wgap , respectively. During bisection, intervals [ left , right ] are maintained by storing their mid-points and semi-widths in the arrays w and werr respectively. The range of indices is specified by the ifirst , ilast , and offset parameters, as explained in Input Parameters .
Input Parameters
- n
-
INTEGER The order of the matrix.
- d
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Array of size n. The n diagonal elements of the diagonal matrix D .
- lld
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Array of size n -1.
The ( n -1) elements li+1 * li+1 * d [ i ], i =0, …, n-2 .
- ifirst
-
INTEGER The index of the first eigenvalue to be computed.
- ilast
-
INTEGER The index of the last eigenvalue to be computed.
- rtol1 , rtol2
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Tolerance for the convergence of the bisection intervals. An interval [ left , right ] has converged if right - left < max ( rtol1 * gap , rtol2 * max(| left | , | right | )) where gap is the (estimated) distance to the nearest eigenvalue.
- offset
-
INTEGER
Offset for the arrays w , wgap and werr , i.e., the elements indexed ifirst - offset - 1 through ilast - offset -1 of these arrays are to be used.
- w
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Array of size n
On input, w [ ifirst - offset - 1] through w [ ilast - offset - 1] are estimates of the eigenvalues of LDLT indexed ifirst through ilast .
- wgap
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Array of size n -1.
On input, the (estimated) gaps between consecutive eigenvalues of LDLT , i.e., wgap [ I - offset - 1] is the gap between eigenvalues I and I + 1. Note that if ifirst = ilast then wgap [ ifirst - offset - 1] must be set to zero.
- werr
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Array of size n.
On input, werr [ ifirst - offset - 1] through werr [ ilast - offset - 1] are the errors in the estimates of the corresponding elements in w .
- work
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 (workspace) array of size 4* n . Workspace.
- iwork
-
(workspace) INTEGER array of size 2* n . Workspace.
- pivmin
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 The minimum pivot in the Sturm sequence.
- lgpvmn
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Logarithm of pivmin , precomputed.
- lgspdm
-
REAL for slarrb2 DOUBLE PRECISION for dlarrb2 Logarithm of the spectral diameter, precomputed.
- twist
-
INTEGER The twist index for the twisted factorization that is used for the negcount . twist = n : Compute negcount from LDLT - λI = L+D+L+Ttwist = 1: Compute negcount from LDLT - λI = U-D-U-Ttwist = r , 1 < r < n : Compute negcount from LDLT - λI = NrΔrNrT
OUTPUT Parameters
- w
-
On output, the eigenvalue estimates in w are refined.
- wgap
-
On output, the eigenvalue gaps in wgap are refined.
- werr
-
On output, the errors in werr are refined.
- info
-
INTEGER Error flag.