 LAPACK  3.4.2 LAPACK: Linear Algebra PACKage
zlar1v.f File Reference

Go to the source code of this file.

## Functions/Subroutines

subroutine zlar1v (N, B1, BN, LAMBDA, D, L, LD, LLD, PIVMIN, GAPTOL, Z, WANTNC, NEGCNT, ZTZ, MINGMA, R, ISUPPZ, NRMINV, RESID, RQCORR, WORK)
ZLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows b1 through bn of the tridiagonal matrix LDLT - λI.

## Function/Subroutine Documentation

 subroutine zlar1v ( integer N, integer B1, integer BN, double precision LAMBDA, double precision, dimension( * ) D, double precision, dimension( * ) L, double precision, dimension( * ) LD, double precision, dimension( * ) LLD, double precision PIVMIN, double precision GAPTOL, complex*16, dimension( * ) Z, logical WANTNC, integer NEGCNT, double precision ZTZ, double precision MINGMA, integer R, integer, dimension( * ) ISUPPZ, double precision NRMINV, double precision RESID, double precision RQCORR, double precision, dimension( * ) WORK )

ZLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows b1 through bn of the tridiagonal matrix LDLT - λI.

Purpose:
``` ZLAR1V computes the (scaled) r-th column of the inverse of
the sumbmatrix in rows B1 through BN of the tridiagonal matrix
L D L**T - sigma I. When sigma 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 :
(a) Stationary qd transform,  L D L**T - sigma I = L(+) D(+) L(+)**T,
(b) Progressive qd transform, L D L**T - sigma I = U(-) D(-) U(-)**T,
(c) Computation of the diagonal elements of the inverse of
L D L**T - sigma 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.
(d) Computation of the (scaled) r-th column of the inverse using the
twisted factorization obtained by combining the top part of the
the stationary and the bottom part of the progressive transform.```
Parameters:
 [in] N ``` N is INTEGER The order of the matrix L D L**T.``` [in] B1 ``` B1 is INTEGER First index of the submatrix of L D L**T.``` [in] BN ``` BN is INTEGER Last index of the submatrix of L D L**T.``` [in] LAMBDA ``` LAMBDA is DOUBLE PRECISION The shift. In order to compute an accurate eigenvector, LAMBDA should be a good approximation to an eigenvalue of L D L**T.``` [in] L ``` L is DOUBLE PRECISION array, dimension (N-1) The (n-1) subdiagonal elements of the unit bidiagonal matrix L, in elements 1 to N-1.``` [in] D ``` D is DOUBLE PRECISION array, dimension (N) The n diagonal elements of the diagonal matrix D.``` [in] LD ``` LD is DOUBLE PRECISION array, dimension (N-1) The n-1 elements L(i)*D(i).``` [in] LLD ``` LLD is DOUBLE PRECISION array, dimension (N-1) The n-1 elements L(i)*L(i)*D(i).``` [in] PIVMIN ``` PIVMIN is DOUBLE PRECISION The minimum pivot in the Sturm sequence.``` [in] GAPTOL ``` GAPTOL is DOUBLE PRECISION Tolerance that indicates when eigenvector entries are negligible w.r.t. their contribution to the residual.``` [in,out] Z ``` Z is COMPLEX*16 array, dimension (N) On input, all entries of Z must be set to 0. On output, Z contains the (scaled) r-th column of the inverse. The scaling is such that Z(R) equals 1.``` [in] WANTNC ``` WANTNC is LOGICAL Specifies whether NEGCNT has to be computed.``` [out] NEGCNT ``` NEGCNT is INTEGER If WANTNC is .TRUE. then NEGCNT = the number of pivots < pivmin in the matrix factorization L D L**T, and NEGCNT = -1 otherwise.``` [out] ZTZ ``` ZTZ is DOUBLE PRECISION The square of the 2-norm of Z.``` [out] MINGMA ``` MINGMA is DOUBLE PRECISION The reciprocal of the largest (in magnitude) diagonal element of the inverse of L D L**T - sigma I.``` [in,out] R ``` R is 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 L**T - sigma I)^{-1} is largest in magnitude. If 1 <= R <= N, R is unchanged. On output, R contains the twist index used to compute Z. Ideally, R designates the position of the maximum entry in the eigenvector.``` [out] ISUPPZ ``` ISUPPZ is INTEGER array, dimension (2) The support of the vector in Z, i.e., the vector Z is nonzero only in elements ISUPPZ(1) through ISUPPZ( 2 ).``` [out] NRMINV ``` NRMINV is DOUBLE PRECISION NRMINV = 1/SQRT( ZTZ )``` [out] RESID ``` RESID is DOUBLE PRECISION The residual of the FP vector. RESID = ABS( MINGMA )/SQRT( ZTZ )``` [out] RQCORR ``` RQCORR is DOUBLE PRECISION The Rayleigh Quotient correction to LAMBDA. RQCORR = MINGMA*TMP``` [out] WORK ` WORK is DOUBLE PRECISION array, dimension (4*N)`
Date:
September 2012
Contributors:
Beresford Parlett, University of California, Berkeley, USA
Jim Demmel, University of California, Berkeley, USA
Inderjit Dhillon, University of Texas, Austin, USA
Osni Marques, LBNL/NERSC, USA
Christof Voemel, University of California, Berkeley, USA

Definition at line 229 of file zlar1v.f.

Here is the call graph for this function:

Here is the caller graph for this function: