# ?lar1v

Computes the (scaled) r-th column of the inverse of the submatrix in rows b1 through bn of tridiagonal matrix.

## Syntax

call slar1v( n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work )

call dlar1v( n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work )

call clar1v( n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work )

call zlar1v( n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work )

## Description

The routine ?lar1v computes the (scaled) r-th column of the inverse of the submatrix in rows b1 through bn of the tridiagonal matrix `L*D*LT - λ*I`. When λ is close to an eigenvalue, the computed vector is an accurate eigenvector. Usually, r corresponds to the index where the eigenvector is largest in magnitude.

The following steps accomplish this computation :

- Stationary qd transform, `L*D*LT - λ*I = L(+)*D(+)*L(+)T`

- Progressive qd transform, `L*D*LT - λ*I = U(-)*D(-)*U(-)T`,

- Computation of the diagonal elements of the inverse of `L*D*LT - λ*I` by combining the above transforms, and choosing r as the index where the diagonal of the inverse is (one of the) largest in magnitude.

- Computation of the (scaled) r-th column of the inverse using the twisted factorization obtained by combining the top part of the stationary and the bottom part of the progressive transform.

## Input Parameters

n

  INTEGER. The order of the matrix L*D*LT.

b1

  INTEGER. First index of the submatrix of L*D*LT.

bn

  INTEGER. Last index of the submatrix of L*D*LT.

lambda

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The shift. To compute an accurate eigenvector, lambda should be a good approximation to an eigenvalue of L*D*LT.

l

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Array, DIMENSION (n-1).

  The (n-1) subdiagonal elements of the unit bidiagonal matrix L, in elements 1 to n-1.

d

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Array, DIMENSION (n).

  The n diagonal elements of the diagonal matrix D.

ld

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Array, DIMENSION (n-1).

  The n-1 elements Li*Di.

lld

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Array, DIMENSION (n-1).

  The n-1 elements Li*Li*Di.

pivmin

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The minimum pivot in the Sturm sequence.

gaptol

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Tolerance that indicates when eigenvector entries are negligible with respect to their contribution to the residual.

z

  REAL for slar1v

  DOUBLE PRECISION for dlar1v

  COMPLEX for clar1v

  COMPLEX*16 for zlar1v

  Array, DIMENSION (n). All entries of z must be set to 0.

wantnc

  LOGICAL.

  Specifies whether negcnt has to be computed.

r

  INTEGER.

  The twist index for the twisted factorization used to compute z. On input, 0 ≤ r ≤ n. If r is input as 0, r is set to the index where `(L*D*LT - lambda*I)-1` is largest in magnitude. If 1 ≤ r ≤ n, r is unchanged.

work

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Workspace array, DIMENSION (4*n).

## Output Parameters

z

  REAL for slar1v

  DOUBLE PRECISION for dlar1v

  COMPLEX for clar1v

  COMPLEX*16 for zlar1v

  Array, DIMENSION (n). The (scaled) r-th column of the inverse. z(r) is returned to be 1.

negcnt

  INTEGER. If wantnc is .TRUE. then negcnt = the number of pivots < pivmin in the matrix factorization `L*D*LT`, and negcnt = -1 otherwise.

ztz

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The square of the 2-norm of z.

mingma

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The reciprocal of the largest (in magnitude) diagonal element of the inverse of `L*D*LT - lambda*I`.

r

  On output, r is the twist index used to compute z. Ideally, r designates the position of the maximum entry in the eigenvector.

isuppz

  INTEGER. Array, DIMENSION (2). The support of the vector in Z, that is, the vector z is nonzero only in elements isuppz(1) through isuppz(2).

nrminv

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  Equals `1/sqrt( ztz )`.

resid

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The residual of the FP vector.

  `resid = ABS( mingma )/sqrt( ztz )`.

rqcorr

  REAL for slar1v/clar1v

  DOUBLE PRECISION for dlar1v/zlar1v

  The Rayleigh Quotient correction to lambda.

  `rqcorr = mingma/ztz`.

Parent topic: Auxiliary Routines