Purpose
  To compute orthogonal matrices Q1, Q2, Q3 for a real 2-by-2 or
  4-by-4 regular pencil
                 ( A11  0  ) ( B11  0  )     (  0  D12 )
    aAB - bD = a (         ) (         ) - b (         ),        (1)
                 (  0  A22 ) (  0  B22 )     ( D21  0  )
  such that Q3' A Q2 and Q2' B Q1 are upper triangular, Q3' D Q1 is
  upper quasi-triangular, and the eigenvalues with negative real
  parts (if there are any) are allocated on the top. The submatrices
  A11, A22, B11, B22 and D12 are upper triangular. If D21 is 2-by-2,
  then all other blocks are nonsingular and the product
     -1        -1    -1        -1
  A22   D21 B11   A11   D12 B22   has a pair of complex conjugate
  eigenvalues.
Specification
      SUBROUTINE MB03ED( N, PREC, A, LDA, B, LDB, D, LDD, Q1, LDQ1, Q2,
     $                   LDQ2, Q3, LDQ3, DWORK, LDWORK, INFO )
C     .. Scalar Arguments ..
      INTEGER            INFO, LDA, LDB, LDD, LDQ1, LDQ2, LDQ3, LDWORK,
     $                   N
      DOUBLE PRECISION   PREC
C     .. Array Arguments ..
      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), D( LDD, * ),
     $                   DWORK( * ), Q1( LDQ1, * ), Q2( LDQ2, * ),
     $                   Q3( LDQ3, * )
Arguments
Input/Output Parameters
  N       (input) INTEGER
          The order of the input pencil, N = 2 or N = 4.
  PREC    (input) DOUBLE PRECISION
          The machine precision, (relative machine precision)*base.
          See the LAPACK Library routine DLAMCH.
  A       (input) DOUBLE PRECISION array, dimension (LDA, N)
          The leading N-by-N upper triangular part of this array
          must contain the upper triangular matrix A of the pencil
          aAB - bD. The strictly lower triangular part and the
          entries of the (1,2) block are not referenced.
  LDA     INTEGER
          The leading dimension of the array A.  LDA >= N.
  B       (input) DOUBLE PRECISION array, dimension (LDB, N)
          The leading N-by-N upper triangular part of this array
          must contain the upper triangular matrix B of the pencil
          aAB - bD. The strictly lower triangular part and the
          entries of the (1,2) block are not referenced.
  LDB     INTEGER
          The leading dimension of the array B.  LDB >= N.
  D       (input/output) DOUBLE PRECISION array, dimension (LDD, N)
          On entry, the leading N-by-N part of this array must
          contain the matrix D of the pencil aAB - bD.
          On exit, if N = 4, the leading N-by-N part of this array
          contains the transformed matrix D in real Schur form.
          If N = 2, this array is unchanged on exit.
  LDD     INTEGER
          The leading dimension of the array D.  LDD >= N.
  Q1      (output) DOUBLE PRECISION array, dimension (LDQ1, N)
          The leading N-by-N part of this array contains the first
          orthogonal transformation matrix.
  LDQ1    INTEGER
          The leading dimension of the array Q1.  LDQ1 >= N.
  Q2      (output) DOUBLE PRECISION array, dimension (LDQ2, N)
          The leading N-by-N part of this array contains the second
          orthogonal transformation matrix.
  LDQ2    INTEGER
          The leading dimension of the array Q2.  LDQ2 >= N.
  Q3      (output) DOUBLE PRECISION array, dimension (LDQ3, N)
          The leading N-by-N part of this array contains the third
          orthogonal transformation matrix.
  LDQ3    INTEGER
          The leading dimension of the array Q3.  LDQ3 >= N.
Workspace
  DWORK   DOUBLE PRECISION array, dimension (LDWORK)
          If N = 2, then DWORK is not referenced.
  LDWORK  INTEGER
          The dimension of the array DWORK.
          If N = 4, then LDWORK >= 79. For good performance LDWORK
          should be generally larger.
          If N = 2, then LDWORK >= 0.
Error Indicator
  INFO    INTEGER
          = 0: succesful exit;
          = 1: the QZ iteration failed in the LAPACK routine DGGES;
          = 2: another error occured during execution of DGGES.
Method
The algorithm uses orthogonal transformations as described on page 20 in [2].References
  [1] Benner, P., Byers, R., Mehrmann, V. and Xu, H.
      Numerical computation of deflating subspaces of skew-
      Hamiltonian/Hamiltonian pencils.
      SIAM J. Matrix Anal. Appl., 24 (1), pp. 165-190, 2002.
  [2] Benner, P., Byers, R., Losse, P., Mehrmann, V. and Xu, H.
      Numerical Solution of Real Skew-Hamiltonian/Hamiltonian
      Eigenproblems.
      Tech. Rep., Technical University Chemnitz, Germany,
      Nov. 2007.
Numerical Aspects
The algorithm is numerically backward stable.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None