larra#

Functions

void slarra(
    const INT           n,
    const f32* restrict D,
          f32* restrict E,
          f32* restrict E2,
    const f32           spltol,
    const f32           tnrm,
          INT*          nsplit,
          INT* restrict isplit,
          INT*          info
);
void slarra(const INT n, const f32 *restrict D, f32 *restrict E, f32 *restrict E2, const f32 spltol, const f32 tnrm, INT *nsplit, INT *restrict isplit, INT *info)#

SLARRA computes the splitting points with threshold SPLTOL.

SLARRA sets any “small” off-diagonal elements to zero.

Parameters

in
n

The order of the matrix. N > 0.

in
D

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

inout
E

Double precision array, dimension (N). On entry, the first (N-1) entries contain the subdiagonal elements of the tridiagonal matrix T; E(N) need not be set. On exit, the entries E(ISPLIT(I)), 0 <= I < NSPLIT, are set to zero, the other entries of E are untouched.

inout
E2

Double precision array, dimension (N). On entry, the first (N-1) entries contain the SQUARES of the subdiagonal elements of the tridiagonal matrix T. On exit, the entries E2(ISPLIT(I)) have been set to zero.

in
spltol

The threshold for splitting. Two criteria can be used: SPLTOL<0 : criterion based on absolute off-diagonal value. SPLTOL>0 : criterion that preserves relative accuracy.

in
tnrm

The norm of the matrix.

out
nsplit

The number of blocks T splits into. 1 <= NSPLIT <= N.

out
isplit

Integer array, dimension (N). The splitting points, at which T breaks up into blocks. The first block consists of rows/columns 0 to ISPLIT(0), the second of rows/columns ISPLIT(0)+1 through ISPLIT(1), etc.

out
info

  • = 0: successful exit.

Functions

void dlarra(
    const INT           n,
    const f64* restrict D,
          f64* restrict E,
          f64* restrict E2,
    const f64           spltol,
    const f64           tnrm,
          INT*          nsplit,
          INT* restrict isplit,
          INT*          info
);
void dlarra(const INT n, const f64 *restrict D, f64 *restrict E, f64 *restrict E2, const f64 spltol, const f64 tnrm, INT *nsplit, INT *restrict isplit, INT *info)#

DLARRA computes the splitting points with threshold SPLTOL.

DLARRA sets any “small” off-diagonal elements to zero.

Parameters

in
n

The order of the matrix. N > 0.

in
D

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

inout
E

Double precision array, dimension (N). On entry, the first (N-1) entries contain the subdiagonal elements of the tridiagonal matrix T; E(N) need not be set. On exit, the entries E(ISPLIT(I)), 0 <= I < NSPLIT, are set to zero, the other entries of E are untouched.

inout
E2

Double precision array, dimension (N). On entry, the first (N-1) entries contain the SQUARES of the subdiagonal elements of the tridiagonal matrix T. On exit, the entries E2(ISPLIT(I)) have been set to zero.

in
spltol

The threshold for splitting. Two criteria can be used: SPLTOL<0 : criterion based on absolute off-diagonal value. SPLTOL>0 : criterion that preserves relative accuracy.

in
tnrm

The norm of the matrix.

out
nsplit

The number of blocks T splits into. 1 <= NSPLIT <= N.

out
isplit

Integer array, dimension (N). The splitting points, at which T breaks up into blocks. The first block consists of rows/columns 0 to ISPLIT(0), the second of rows/columns ISPLIT(0)+1 through ISPLIT(1), etc.

out
info

  • = 0: successful exit.