## MB03QW

### Reduce a 2-by-2 diagonal block pair of an upper quasi-triangular pencil to standard form and compute eigenvalues

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

Purpose

      To compute the eigenvalues of a selected 2-by-2 diagonal block
      pair of an upper quasi-triangular pencil, to reduce the selected
      block pair to the standard form and to split it in the case of
      real eigenvalues, by constructing orthogonal matrices UT and VT.
      The transformations UT and VT are applied to the pair (A,E) by
      computing (UT'*A*VT, UT'*E*VT ), to the matrices U and V,
      by computing U*UT and V*VT.

Specification

          SUBROUTINE MB03QW( N, L, A, LDA, E, LDE, U, LDU, V, LDV,
         $                   ALPHAR, ALPHAI, BETA, INFO )
    C     .. Scalar Arguments ..
          INTEGER          INFO, L, LDA, LDE, LDU, LDV, N
          DOUBLE PRECISION ALPHAI(*), ALPHAR(*), BETA(*)
    C     .. Array Arguments ..
          DOUBLE PRECISION A(LDA,*), E(LDE,*), U(LDU,*), V(LDV,*)

Arguments

Input/Output Parameters

      N       (input) INTEGER
              The order of the matrices A, E, UT and VT.  N >= 2.

      L       (input) INTEGER
              Specifies the position of the block.  1 <= L < N.

      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
              On entry, the leading N-by-N part of this array must
              contain the upper quasi-triangular matrix A whose
              selected 2-by-2 diagonal block is to be processed.
              On exit, the leading N-by-N part of this array contains
              the upper quasi-triangular matrix A after its selected
              block has been split and/or put in the LAPACK standard
              form.

      LDA     INTEGER
              The leading dimension of the array A.  LDA >= N.

      E       (input/output) DOUBLE PRECISION array, dimension (LDE,N)
              On entry, the leading N-by-N part of this array must
              contain the upper triangular matrix E whose selected
              2-by-2 diagonal block is to be processed.
              On exit, the leading N-by-N part of this array contains
              the transformed upper triangular matrix E (in the LAPACK
              standard form).

      LDE     INTEGER
              The leading dimension of the array E.  LDE >= N.

      U       (input/output) DOUBLE PRECISION array, dimension (LDU,N)
              On entry, the leading N-by-N part of this array must
              contain a transformation matrix U.
              On exit, the leading N-by-N part of this array contains
              U*UT, where UT is the transformation matrix used to
              split and/or standardize the selected block pair.

      LDU     INTEGER
              The leading dimension of the array U.  LDU >= N.

      V       (input/output) DOUBLE PRECISION array, dimension (LDV,N)
              On entry, the leading N-by-N part of this array must
              contain a transformation matrix V.
              On exit, the leading N-by-N part of this array contains
              V*VT, where VT is the transformation matrix used to
              split and/or standardize the selected block pair.

      LDV     INTEGER
              The leading dimension of the array V.  LDV >= N.

      ALPHAR  (output) DOUBLE PRECISION array, dimension (2)
      ALPHAI  (output) DOUBLE PRECISION array, dimension (2)
      BETA    (output) DOUBLE PRECISION array, dimension (2)
              (ALPHAR(k)+i*ALPHAI(k))/BETA(k) are the eigenvalues of the
              block pair of the pencil (A,B), k=1,2, i = sqrt(-1).
              Note that BETA(k) may be zero.

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value.

Method

      Let A1 = ( A(L,L)    A(L,L+1)   ), E1 = ( E(L,L)    E(L,L+1)   ),
               ( A(L+1,L)  A(L+1,L+1) )       ( E(L+1,L)  E(L+1,L+1) )
      be the specified 2-by-2 diagonal block pair of the pencil (A,B).
      If the eigenvalues of (A1,E1) are complex, then they are computed
      and stored in ER and EI, where the real part is stored in ER and
      the positive imaginary part in EI. The 2-by-2 block pair is
      reduced if necessary to the standard form, such that
      A(L,L) = A(L+1,L+1), and A(L,L+1) and A(L+1,L) have oposite signs.
      If the eigenvalues are real, the 2-by-2 block pair is reduced to
      upper triangular form such that ABS(A(L,L)) >= ABS(A(L+1,L+1)).
      In both cases, an orthogonal rotation U1' is constructed such that
      U1'*A1*U1 has the appropriate form. Let UT be an extension of U1
      to an N-by-N orthogonal matrix, using identity submatrices. Then A
      and E are replaced by UT'*A*UT and UT'*E*UT, and the contents of
      the arrays U and V are U * UT and V * VT, respectively.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index