Loading...
Searching...
No Matches

## dlaein()

subroutine dlaein | ( | logical | rightv,
|  | logical | noinit,
|  | integer | n,
|  | double precision, dimension( ldh, * ) | h,
|  | integer | ldh,
|  | double precision | wr,
|  | double precision | wi,
|  | double precision, dimension( * ) | vr,
|  | double precision, dimension( * ) | vi,
|  | double precision, dimension( ldb, * ) | b,
|  | integer | ldb,
|  | double precision, dimension( * ) | work,
|  | double precision | eps3,
|  | double precision | smlnum,
|  | double precision | bignum,
|  | integer | info )

DLAEIN computes a specified right or left eigenvector of an upper Hessenberg matrix by inverse iteration.

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

Purpose:

      !>
      !> DLAEIN uses inverse iteration to find a right or left eigenvector
      !> corresponding to the eigenvalue (WR,WI) of a real upper Hessenberg
      !> matrix H.
      !>

Parameters

  [in]

  RIGHTV

      !>          RIGHTV is LOGICAL
      !>          = .TRUE. : compute right eigenvector;
      !>          = .FALSE.: compute left eigenvector.
      !>

  [in]

  NOINIT

      !>          NOINIT is LOGICAL
      !>          = .TRUE. : no initial vector supplied in (VR,VI).
      !>          = .FALSE.: initial vector supplied in (VR,VI).
      !>

  [in]

  N

      !>          N is INTEGER
      !>          The order of the matrix H.  N >= 0.
      !>

  [in]

  H

      !>          H is DOUBLE PRECISION array, dimension (LDH,N)
      !>          The upper Hessenberg matrix H.
      !>

  [in]

  LDH

      !>          LDH is INTEGER
      !>          The leading dimension of the array H.  LDH >= max(1,N).
      !>

  [in]

  WR

      !>          WR is DOUBLE PRECISION
      !>

  [in]

  WI

      !>          WI is DOUBLE PRECISION
      !>          The real and imaginary parts of the eigenvalue of H whose
      !>          corresponding right or left eigenvector is to be computed.
      !>

  [in,out]

  VR

      !>          VR is DOUBLE PRECISION array, dimension (N)
      !>

  [in,out]

  VI

      !>          VI is DOUBLE PRECISION array, dimension (N)
      !>          On entry, if NOINIT = .FALSE. and WI = 0.0, VR must contain
      !>          a real starting vector for inverse iteration using the real
      !>          eigenvalue WR; if NOINIT = .FALSE. and WI.ne.0.0, VR and VI
      !>          must contain the real and imaginary parts of a complex
      !>          starting vector for inverse iteration using the complex
      !>          eigenvalue (WR,WI); otherwise VR and VI need not be set.
      !>          On exit, if WI = 0.0 (real eigenvalue), VR contains the
      !>          computed real eigenvector; if WI.ne.0.0 (complex eigenvalue),
      !>          VR and VI contain the real and imaginary parts of the
      !>          computed complex eigenvector. The eigenvector is normalized
      !>          so that the component of largest magnitude has magnitude 1;
      !>          here the magnitude of a complex number (x,y) is taken to be
      !>          |x| + |y|.
      !>          VI is not referenced if WI = 0.0.
      !>

  [out]

  B

      !>          B is DOUBLE PRECISION array, dimension (LDB,N)
      !>

  [in]

  LDB

      !>          LDB is INTEGER
      !>          The leading dimension of the array B.  LDB >= N+1.
      !>

  [out]

  WORK

      !>          WORK is DOUBLE PRECISION array, dimension (N)
      !>

  [in]

  EPS3

      !>          EPS3 is DOUBLE PRECISION
      !>          A small machine-dependent value which is used to perturb
      !>          close eigenvalues, and to replace zero pivots.
      !>

  [in]

  SMLNUM

      !>          SMLNUM is DOUBLE PRECISION
      !>          A machine-dependent value close to the underflow threshold.
      !>

  [in]

  BIGNUM

      !>          BIGNUM is DOUBLE PRECISION
      !>          A machine-dependent value close to the overflow threshold.
      !>

  [out]

  INFO

      !>          INFO is INTEGER
      !>          = 0:  successful exit
      !>          = 1:  inverse iteration did not converge; VR is set to the
      !>                last iterate, and so is VI if WI.ne.0.0.
      !>

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