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

## Include Files

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

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

DOUBLE COMPLEX 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 ≤ rn. 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 ≤ rn, 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

DOUBLE COMPLEX 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`.

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