# ?larrk

Computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy.

## Syntax

call slarrk( n, iw, gl, gu, d, e2, pivmin, reltol, w, werr, info )

call dlarrk( n, iw, gl, gu, d, e2, pivmin, reltol, w, werr, info )

## Description

The routine computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy. This is an auxiliary code to be called from ?stemr.

To avoid overflow, the matrix must be scaled so that its largest element is no greater than `(overflow1/2*underflow1/4)` in absolute value, and for greatest accuracy, it should not be much smaller than that. (For more details see [Kahan66].

## Input Parameters

n

  INTEGER. The order of the matrix T. (`n ≥ 1`).

iw

  INTEGER.

  The index of the eigenvalue to be returned.

gl, gu

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  An upper and a lower bound on the eigenvalue.
d

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  Array, DIMENSION (n).

  Contains n diagonal elements of the matrix T.

e2

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  Array, DIMENSION (`n-1`).

  Contains `(n-1)` squared off-diagonal elements of the T.

pivmin

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  The minimum pivot in the Sturm sequence for the matrix T.

reltol

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  The minimum relative width of an interval. When an interval is narrower than reltol times the larger (in magnitude) endpoint, then it is considered to be sufficiently small, that is converged. Note: this should always be at least `radix*machine epsilon`.

## Output Parameters

w

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  Contains the eigenvalue approximation.

werr

  REAL for slarrk

  DOUBLE PRECISION for dlarrk

  Contains the error bound on the corresponding eigenvalue approximation in w.

info

  INTEGER.

  `= 0:` Eigenvalue converges

  `= -1:` Eigenvalue does not converge

Parent topic: Auxiliary Routines