larrk#

Functions

void slarrk(
    const INT           n,
    const INT           iw,
    const f32           gl,
    const f32           gu,
    const f32* restrict D,
    const f32* restrict E2,
    const f32           pivmin,
    const f32           reltol,
          f32*          w,
          f32*          werr,
          INT*          info
);
void slarrk(const INT n, const INT iw, const f32 gl, const f32 gu, const f32 *restrict D, const f32 *restrict E2, const f32 pivmin, const f32 reltol, f32 *w, f32 *werr, INT *info)#

SLARRK computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy.

This is an auxiliary code to be called from SSTEMR.

To avoid overflow, the matrix must be scaled so that its largest element is no greater than overflow^(1/2) * underflow^(1/4) in absolute value, and for greatest accuracy, it should not be much smaller than that.

See W. Kahan “Accurate Eigenvalues of a Symmetric Tridiagonal

Matrix”, Report CS41, Computer Science Dept., Stanford University, July 21, 1966.

Parameters

in
n

The order of the tridiagonal matrix T. N >= 0.

in
iw

The index of the eigenvalue to be returned.

in
gl

A lower bound on the eigenvalue.

in
gu

An upper bound on the eigenvalue.

in
D

Double precision array, dimension (N). The N diagonal elements of the tridiagonal matrix T.

in
E2

Double precision array, dimension (N-1). The (N-1) squared off-diagonal elements of the tridiagonal matrix T.

in
pivmin

The minimum pivot allowed in the Sturm sequence for T.

in
reltol

The minimum relative width of an interval.

out
w

The eigenvalue approximation.

out
werr

The error bound on the corresponding eigenvalue approximation in W.

out
info

  • = 0: Eigenvalue converged.

  • = -1: Eigenvalue did NOT converge.

Functions

void dlarrk(
    const INT           n,
    const INT           iw,
    const f64           gl,
    const f64           gu,
    const f64* restrict D,
    const f64* restrict E2,
    const f64           pivmin,
    const f64           reltol,
          f64*          w,
          f64*          werr,
          INT*          info
);
void dlarrk(const INT n, const INT iw, const f64 gl, const f64 gu, const f64 *restrict D, const f64 *restrict E2, const f64 pivmin, const f64 reltol, f64 *w, f64 *werr, INT *info)#

DLARRK computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy.

This is an auxiliary code to be called from DSTEMR.

To avoid overflow, the matrix must be scaled so that its largest element is no greater than overflow^(1/2) * underflow^(1/4) in absolute value, and for greatest accuracy, it should not be much smaller than that.

See W. Kahan “Accurate Eigenvalues of a Symmetric Tridiagonal

Matrix”, Report CS41, Computer Science Dept., Stanford University, July 21, 1966.

Parameters

in
n

The order of the tridiagonal matrix T. N >= 0.

in
iw

The index of the eigenvalue to be returned.

in
gl

A lower bound on the eigenvalue.

in
gu

An upper bound on the eigenvalue.

in
D

Double precision array, dimension (N). The N diagonal elements of the tridiagonal matrix T.

in
E2

Double precision array, dimension (N-1). The (N-1) squared off-diagonal elements of the tridiagonal matrix T.

in
pivmin

The minimum pivot allowed in the Sturm sequence for T.

in
reltol

The minimum relative width of an interval.

out
w

The eigenvalue approximation.

out
werr

The error bound on the corresponding eigenvalue approximation in W.

out
info

  • = 0: Eigenvalue converged.

  • = -1: Eigenvalue did NOT converge.