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