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)#
SLARRA computes the splitting points with threshold SPLTOL.
SLARRA sets any “small” off-diagonal elements to zero.
Parameters
innThe order of the matrix. N > 0.
inDDouble precision array, dimension (N). The N diagonal elements of the tridiagonal matrix T.
inoutEDouble 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.
inoutE2Double 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.
inspltolThe threshold for splitting. Two criteria can be used: SPLTOL<0 : criterion based on absolute off-diagonal value. SPLTOL>0 : criterion that preserves relative accuracy.
intnrmThe norm of the matrix.
outnsplitThe number of blocks T splits into. 1 <= NSPLIT <= N.
outisplitInteger 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.
outinfo= 0: successful exit.
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
);
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)#
DLARRA computes the splitting points with threshold SPLTOL.
DLARRA sets any “small” off-diagonal elements to zero.
Parameters
innThe order of the matrix. N > 0.
inDDouble precision array, dimension (N). The N diagonal elements of the tridiagonal matrix T.
inoutEDouble 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.
inoutE2Double 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.
inspltolThe threshold for splitting. Two criteria can be used: SPLTOL<0 : criterion based on absolute off-diagonal value. SPLTOL>0 : criterion that preserves relative accuracy.
intnrmThe norm of the matrix.
outnsplitThe number of blocks T splits into. 1 <= NSPLIT <= N.
outisplitInteger 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.
outinfo= 0: successful exit.
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
);