# ?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 )

## Description

This 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.

Parent topic: Auxiliary Routines