?larra

Computes the splitting points with the specified threshold.

Syntax

call slarra( n, d, e, e2, spltol, tnrm, nsplit, isplit, info )

call dlarra( n, d, e, e2, spltol, tnrm, nsplit, isplit, info )

Include Files

  • Fortran: mkl.fi
  • C: mkl.h

Description

The routine computes the splitting points with the specified threshold and sets any "small" off-diagonal elements to zero.

Input Parameters

n

INTEGER. The order of the matrix (n > 1).

d

REAL for slarra

DOUBLE PRECISION for dlarra

Array, DIMENSION (n).

Contains n diagonal elements of the tridiagonal matrix T.

e

REAL for slarra

DOUBLE PRECISION for dlarra

Array, DIMENSION (n).

First (n-1) entries contain the subdiagonal elements of the tridiagonal matrix T; e(n) need not be set.

e2

REAL for slarra

DOUBLE PRECISION for dlarra

Array, DIMENSION (n).

First (n-1) entries contain the squares of the subdiagonal elements of the tridiagonal matrix T; e2(n) need not be set.

spltol

REAL for slarra

DOUBLE PRECISION for dlarra

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.

tnrm

REAL for slarra

DOUBLE PRECISION for dlarra

The norm of the matrix.

Output Parameters

e

On exit, the entries e(isplit(i)), 1 ≤ i ≤ nsplit, are set to zero, the other entries of e are untouched.

e2
On exit, the entries e2(isplit(i)), 1 ≤ i ≤ nsplit, are set to zero.
nsplit

INTEGER.

The number of blocks the matrix T splits into. 1 ≤ nsplitn

isplit
INTEGER.

Array, DIMENSION (n).

The splitting points, at which T breaks up into blocks. The first block consists of rows/columns 1 to isplit(1), the second of rows/columns isplit(1)+1 through isplit(2), and so on, and the nsplit-th consists of rows/columns isplit(nsplit-1)+1 through isplit(nsplit)=n.

info

INTEGER.

= 0: successful exit.

For more complete information about compiler optimizations, see our Optimization Notice.