MB03BB

Eigenvalues of a 2-by-2 matrix product via a complex single shifted periodic QZ algorithm

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

  To compute the eigenvalues of a general 2-by-2 matrix product via
  a complex single shifted periodic QZ algorithm.

Specification
      SUBROUTINE MB03BB( BASE, LGBAS, ULP, K, AMAP, S, SINV, A, LDA1,
     $                   LDA2, ALPHAR, ALPHAI, BETA, SCAL, DWORK, INFO )
C     .. Scalar Arguments ..
      INTEGER           INFO, K, LDA1, LDA2, SINV
      DOUBLE PRECISION  BASE, LGBAS, ULP
C     .. Array Arguments ..
      DOUBLE PRECISION  A(LDA1,LDA2,*), ALPHAI(2), ALPHAR(2), BETA(2),
     $                  DWORK(*)
      INTEGER           AMAP(*), S(*), SCAL(2)

Arguments

Input/Output Parameters

  BASE    (input)  DOUBLE PRECISION
          Machine base.

  LGBAS   (input)  DOUBLE PRECISION
          Logarithm of BASE.

  ULP     (input)  DOUBLE PRECISION
          Machine precision.

  K       (input)  INTEGER
          The number of factors.  K >= 1.

  AMAP    (input) INTEGER array, dimension (K)
          The map for accessing the factors, i.e., if AMAP(I) = J,
          then the factor A_I is stored at the J-th position in A.

  S       (input)  INTEGER array, dimension (K)
          The signature array. Each entry of S must be 1 or -1.

  SINV    (input) INTEGER
          Signature multiplier. Entries of S are virtually
          multiplied by SINV.

  A       (input)  DOUBLE PRECISION array, dimension (LDA1,LDA2,K)
          On entry, the leading 2-by-2-by-K part of this array must
          contain a 2-by-2 product (implicitly represented by its K
          factors) in upper Hessenberg-triangular form.

  LDA1    INTEGER
          The first leading dimension of the array A.  LDA1 >= 2.

  LDA2    INTEGER
          The second leading dimension of the array A.  LDA2 >= 2.

  ALPHAR  (output)  DOUBLE PRECISION array, dimension (2)
          On exit, this array contains the scaled real part of the
          two eigenvalues. If BETA(I) <> 0, then the I-th eigenvalue
          (I = 1 : 2) is given by
              (ALPHAR(I) + ALPHAI(I)*SQRT(-1) ) * (BASE)**SCAL(I).

  ALPHAI  (output)  DOUBLE PRECISION array, dimension (2)
          On exit, this array contains the scaled imaginary part of
          the two eigenvalues. ALPHAI(1) >= 0.

  BETA    (output)  DOUBLE PRECISION array, dimension (2)
          On exit, this array contains information about infinite
          eigenvalues. If BETA(I) = 0, then the I-th eigenvalue is
          infinite. Otherwise, BETA(I) = 1.0.

  SCAL    (output)  INTEGER array, dimension (2)
          On exit, this array contains the scaling exponents for the
          two eigenvalues.

Workspace
  DWORK   DOUBLE PRECISION array, dimension (8*K)

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          = 1:  the periodic QZ algorithm did not converge;
          = 2:  the computed eigenvalues might be inaccurate.
                Both values might be taken as warnings, since
                approximations of eigenvalues are returned.

Method
  A complex single shifted periodic QZ iteration is applied.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index