# ?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 ≤ nsplit ≤ n`

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.