Developer Reference for Intel® oneAPI Math Kernel Library for C
?sterf
Computes all eigenvalues of a real symmetric tridiagonal matrix using QR algorithm.
Syntax
lapack_intLAPACKE_ssterf ( lapack_intn , float*d , float*e );
lapack_intLAPACKE_dsterf ( lapack_intn , double*d , double*e );
Include Files
mkl.h
Description
ssterf dsterf sterf
The routine computes all the eigenvalues of a real symmetric tridiagonal matrix T (which can be obtained by reducing a symmetric or Hermitian matrix to tridiagonal form). The routine uses a square-root-free variant of the QR algorithm.
If you need not only the eigenvalues but also the eigenvectors, call steqr .
Input Parameters
n
The order of the matrix T ( n≥ 0 ).
- d , e
-
REAL for ssterf DOUBLE PRECISION for dsterf . Arrays:
d contains the diagonal elements of T .
The dimension of d must be at least max(1, n ).
e contains the off-diagonal elements of T .
The dimension of e must be at least max(1, n -1).
Output Parameters
- d
-
The n eigenvalues in ascending order, unless info > 0. See also info .
- e
-
On exit, the array is overwritten; see info .
Return Values
This function returns a value info .
If info=0 , the execution is successful.
If info = i , the algorithm failed to find all the eigenvalues after 30 n iterations:
i off-diagonal elements have not converged to zero. On exit, d and e contain, respectively, the diagonal and off-diagonal elements of a tridiagonal matrix orthogonally similar to T .
If info = -i , the i -th parameter had an illegal value.
Fortran 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
The computed eigenvalues and eigenvectors are exact for a matrix \(T+E\) such that \(||E||_{2} = O(\varepsilon) ||T||_{2}\) , where \(\varepsilon\) is the machine precision.
If λ i is an exact eigenvalue, and mi is the corresponding computed value, then
\(|\mu i - \lambda i| \leq c(n) \varepsilon ||T||_{2}\)
where c(n) is a modestly increasing function of n .
The total number of floating-point operations depends on how rapidly the algorithm converges. Typically, it is about \(14n^{2}\) .