Loading...
Searching...
No Matches

## zlar1v()

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.

Download ZLAR1V + dependencies [TGZ] [ZIP] [TXT]

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)
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.

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