1CHGEQZ(1) LAPACK routine (version 3.2) CHGEQZ(1)
2
3
4
6 CHGEQZ - computes the eigenvalues of a complex matrix pair (H,T),
7
9 SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
10 ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, RWORK,
11 INFO )
12
13 CHARACTER COMPQ, COMPZ, JOB
14
15 INTEGER IHI, ILO, INFO, LDH, LDQ, LDT, LDZ, LWORK, N
16
17 REAL RWORK( * )
18
19 COMPLEX ALPHA( * ), BETA( * ), H( LDH, * ), Q( LDQ, * ), T(
20 LDT, * ), WORK( * ), Z( LDZ, * )
21
23 CHGEQZ computes the eigenvalues of a complex matrix pair (H,T), where H
24 is an upper Hessenberg matrix and T is upper triangular, using the sin‐
25 gle-shift QZ method.
26 Matrix pairs of this type are produced by the reduction to generalized
27 upper Hessenberg form of a complex matrix pair (A,B):
28 A = Q1*H*Z1**H, B = Q1*T*Z1**H,
29 as computed by CGGHRD.
30 If JOB='S', then the Hessenberg-triangular pair (H,T) is
31 also reduced to generalized Schur form,
32 H = Q*S*Z**H, T = Q*P*Z**H,
33 where Q and Z are unitary matrices and S and P are upper triangular.
34 Optionally, the unitary matrix Q from the generalized Schur factoriza‐
35 tion may be postmultiplied into an input matrix Q1, and the unitary
36 matrix Z may be postmultiplied into an input matrix Z1. If Q1 and Z1
37 are the unitary matrices from CGGHRD that reduced the matrix pair (A,B)
38 to generalized Hessenberg form, then the output matrices Q1*Q and Z1*Z
39 are the unitary factors from the generalized Schur factorization of
40 (A,B):
41 A = (Q1*Q)*S*(Z1*Z)**H, B = (Q1*Q)*P*(Z1*Z)**H.
42 To avoid overflow, eigenvalues of the matrix pair (H,T)
43 (equivalently, of (A,B)) are computed as a pair of complex values
44 (alpha,beta). If beta is nonzero, lambda = alpha / beta is an eigen‐
45 value of the generalized nonsymmetric eigenvalue problem (GNEP)
46 A*x = lambda*B*x
47 and if alpha is nonzero, mu = beta / alpha is an eigenvalue of the
48 alternate form of the GNEP
49 mu*A*y = B*y.
50 The values of alpha and beta for the i-th eigenvalue can be read
51 directly from the generalized Schur form: alpha = S(i,i), beta =
52 P(i,i).
53 Ref: C.B. Moler & G.W. Stewart, "An Algorithm for Generalized Matrix
54 Eigenvalue Problems", SIAM J. Numer. Anal., 10(1973),
55 pp. 241--256.
56
58 JOB (input) CHARACTER*1
59 = 'E': Compute eigenvalues only;
60 = 'S': Computer eigenvalues and the Schur form.
61
62 COMPQ (input) CHARACTER*1
63 = 'N': Left Schur vectors (Q) are not computed;
64 = 'I': Q is initialized to the unit matrix and the matrix Q of
65 left Schur vectors of (H,T) is returned; = 'V': Q must contain
66 a unitary matrix Q1 on entry and the product Q1*Q is returned.
67
68 COMPZ (input) CHARACTER*1
69 = 'N': Right Schur vectors (Z) are not computed;
70 = 'I': Q is initialized to the unit matrix and the matrix Z of
71 right Schur vectors of (H,T) is returned; = 'V': Z must contain
72 a unitary matrix Z1 on entry and the product Z1*Z is returned.
73
74 N (input) INTEGER
75 The order of the matrices H, T, Q, and Z. N >= 0.
76
77 ILO (input) INTEGER
78 IHI (input) INTEGER ILO and IHI mark the rows and columns
79 of H which are in Hessenberg form. It is assumed that A is
80 already upper triangular in rows and columns 1:ILO-1 and
81 IHI+1:N. If N > 0, 1 <= ILO <= IHI <= N; if N = 0, ILO=1 and
82 IHI=0.
83
84 H (input/output) COMPLEX array, dimension (LDH, N)
85 On entry, the N-by-N upper Hessenberg matrix H. On exit, if
86 JOB = 'S', H contains the upper triangular matrix S from the
87 generalized Schur factorization. If JOB = 'E', the diagonal of
88 H matches that of S, but the rest of H is unspecified.
89
90 LDH (input) INTEGER
91 The leading dimension of the array H. LDH >= max( 1, N ).
92
93 T (input/output) COMPLEX array, dimension (LDT, N)
94 On entry, the N-by-N upper triangular matrix T. On exit, if
95 JOB = 'S', T contains the upper triangular matrix P from the
96 generalized Schur factorization. If JOB = 'E', the diagonal of
97 T matches that of P, but the rest of T is unspecified.
98
99 LDT (input) INTEGER
100 The leading dimension of the array T. LDT >= max( 1, N ).
101
102 ALPHA (output) COMPLEX array, dimension (N)
103 The complex scalars alpha that define the eigenvalues of GNEP.
104 ALPHA(i) = S(i,i) in the generalized Schur factorization.
105
106 BETA (output) COMPLEX array, dimension (N)
107 The real non-negative scalars beta that define the eigenvalues
108 of GNEP. BETA(i) = P(i,i) in the generalized Schur factoriza‐
109 tion. Together, the quantities alpha = ALPHA(j) and beta =
110 BETA(j) represent the j-th eigenvalue of the matrix pair (A,B),
111 in one of the forms lambda = alpha/beta or mu = beta/alpha.
112 Since either lambda or mu may overflow, they should not, in
113 general, be computed.
114
115 Q (input/output) COMPLEX array, dimension (LDQ, N)
116 On entry, if COMPZ = 'V', the unitary matrix Q1 used in the
117 reduction of (A,B) to generalized Hessenberg form. On exit, if
118 COMPZ = 'I', the unitary matrix of left Schur vectors of (H,T),
119 and if COMPZ = 'V', the unitary matrix of left Schur vectors of
120 (A,B). Not referenced if COMPZ = 'N'.
121
122 LDQ (input) INTEGER
123 The leading dimension of the array Q. LDQ >= 1. If COMPQ='V'
124 or 'I', then LDQ >= N.
125
126 Z (input/output) COMPLEX array, dimension (LDZ, N)
127 On entry, if COMPZ = 'V', the unitary matrix Z1 used in the
128 reduction of (A,B) to generalized Hessenberg form. On exit, if
129 COMPZ = 'I', the unitary matrix of right Schur vectors of
130 (H,T), and if COMPZ = 'V', the unitary matrix of right Schur
131 vectors of (A,B). Not referenced if COMPZ = 'N'.
132
133 LDZ (input) INTEGER
134 The leading dimension of the array Z. LDZ >= 1. If COMPZ='V'
135 or 'I', then LDZ >= N.
136
137 WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
138 On exit, if INFO >= 0, WORK(1) returns the optimal LWORK.
139
140 LWORK (input) INTEGER
141 The dimension of the array WORK. LWORK >= max(1,N). If LWORK
142 = -1, then a workspace query is assumed; the routine only cal‐
143 culates the optimal size of the WORK array, returns this value
144 as the first entry of the WORK array, and no error message
145 related to LWORK is issued by XERBLA.
146
147 RWORK (workspace) REAL array, dimension (N)
148
149 INFO (output) INTEGER
150 = 0: successful exit
151 < 0: if INFO = -i, the i-th argument had an illegal value
152 = 1,...,N: the QZ iteration did not converge. (H,T) is not in
153 Schur form, but ALPHA(i) and BETA(i), i=INFO+1,...,N should be
154 correct. = N+1,...,2*N: the shift calculation failed. (H,T)
155 is not in Schur form, but ALPHA(i) and BETA(i), i=INFO-
156 N+1,...,N should be correct.
157
159 We assume that complex ABS works as long as its value is less than
160 overflow.
161
162
163
164 LAPACK routine (version 3.2) November 2008 CHGEQZ(1)