Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?sterf

Computes all eigenvalues of a real symmetric tridiagonal matrix using QR algorithm.

Syntax

call ssterf(n, d, e, info)

call dsterf(n, d, e, info)

call sterf(d, e [,info])

Include Files

  • mkl.fi, mkl_lapack.f90

Description

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

INTEGER. 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.

info

INTEGER.

If info = 0, the execution is successful.

If info = i, the algorithm failed to find all the eigenvalues after 30n 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

Routines in Fortran 95 interface have fewer arguments in the calling sequence than their FORTRAN 77 counterparts. For general conventions applied to skip redundant or restorable arguments, see Fortran 95 Interface Conventions.

Specific details for the routine sterf interface are the following:

d

Holds the vector of length n.

e

Holds the vector of length (n-1).

Application Notes

The computed eigenvalues and eigenvectors are exact for a matrix T+E such that ||E||2 = O(ε)*||T||2, where ε is the machine precision.

If λi is an exact eigenvalue, and mi is the corresponding computed value, then

|μi - λi| c(n)*ε*||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 14n2.