Purpose
To compute orthogonal matrices Q1 and Q2 for a real 2-by-2 or
4-by-4 regular pencil
( A11 0 ) ( 0 B12 )
aA - bB = a ( ) - b ( ), (1)
( 0 A22 ) ( B21 0 )
such that Q2' A Q1 is upper triangular, Q2' B 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, and
B12 are upper triangular. If B21 is 2-by-2, then all the other
blocks are nonsingular and the product
-1 -1
A11 B12 A22 B21 has a pair of complex conjugate eigenvalues.
Specification
SUBROUTINE MB03FD( N, PREC, A, LDA, B, LDB, Q1, LDQ1, Q2, LDQ2,
$ DWORK, LDWORK, INFO )
C .. Scalar Arguments ..
INTEGER INFO, LDA, LDB, LDQ1, LDQ2, LDWORK, N
DOUBLE PRECISION PREC
C .. Array Arguments ..
DOUBLE PRECISION A( LDA, * ), B( LDB, * ), DWORK( * ),
$ Q1( LDQ1, * ), Q2( LDQ2, * )
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/output) DOUBLE PRECISION array, dimension (LDA, N)
On entry, the leading N-by-N part of this array must
contain the matrix A of the pencil aA - bB.
If N = 2, the diagonal elements only are referenced.
On exit, if N = 4, the leading N-by-N part of this array
contains the transformed upper triangular matrix of the
generalized real Schur form of the pencil aA - bB.
If N = 2, this array is unchanged on exit.
LDA INTEGER
The leading dimension of the array A. LDA >= N.
B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
On entry, the leading N-by-N part of this array must
contain the matrix B of the pencil aA - bB.
If N = 2, the anti-diagonal elements only are referenced.
On exit, if N = 4, the leading N-by-N part of this array
contains the transformed real Schur matrix of the
generalized real Schur form of the pencil aA - bB.
If N = 2, this array is unchanged on exit.
LDB INTEGER
The leading dimension of the array B. LDB >= 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.
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 >= 63. 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 29 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