sterf#

Functions

void ssterf(
    const INT           n,
          f32* restrict D,
          f32* restrict E,
          INT*          info
);
void ssterf(const INT n, f32 *restrict D, f32 *restrict E, INT *info)#

SSTERF computes all eigenvalues of a symmetric tridiagonal matrix using the Pal-Walker-Kahan variant of the QL or QR algorithm.

Parameters

in
n

The order of the matrix. n >= 0.

inout
D

Double precision array, dimension (n). On entry, the n diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Double precision array, dimension (n-1). On entry, the (n-1) subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: the algorithm failed to find all of the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.

Functions

void dsterf(
    const INT           n,
          f64* restrict D,
          f64* restrict E,
          INT*          info
);
void dsterf(const INT n, f64 *restrict D, f64 *restrict E, INT *info)#

DSTERF computes all eigenvalues of a symmetric tridiagonal matrix using the Pal-Walker-Kahan variant of the QL or QR algorithm.

Parameters

in
n

The order of the matrix. n >= 0.

inout
D

Double precision array, dimension (n). On entry, the n diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Double precision array, dimension (n-1). On entry, the (n-1) subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: the algorithm failed to find all of the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.