1DGGHRD(1) LAPACK routine (version 3.2) DGGHRD(1)
2
3
4
6 DGGHRD - reduces a pair of real matrices (A,B) to generalized upper
7 Hessenberg form using orthogonal transformations, where A is a general
8 matrix and B is upper triangular
9
11 SUBROUTINE DGGHRD( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ,
12 Z, LDZ, INFO )
13
14 CHARACTER COMPQ, COMPZ
15
16 INTEGER IHI, ILO, INFO, LDA, LDB, LDQ, LDZ, N
17
18 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z(
19 LDZ, * )
20
22 DGGHRD reduces a pair of real matrices (A,B) to generalized upper Hes‐
23 senberg form using orthogonal transformations, where A is a general
24 matrix and B is upper triangular. The form of the generalized eigen‐
25 value problem is
26 A*x = lambda*B*x,
27 and B is typically made upper triangular by computing its QR factoriza‐
28 tion and moving the orthogonal matrix Q to the left side of the equa‐
29 tion.
30 This subroutine simultaneously reduces A to a Hessenberg matrix H:
31 Q**T*A*Z = H
32 and transforms B to another upper triangular matrix T:
33 Q**T*B*Z = T
34 in order to reduce the problem to its standard form
35 H*y = lambda*T*y
36 where y = Z**T*x.
37 The orthogonal matrices Q and Z are determined as products of Givens
38 rotations. They may either be formed explicitly, or they may be post‐
39 multiplied into input matrices Q1 and Z1, so that
40 Q1 * A * Z1**T = (Q1*Q) * H * (Z1*Z)**T
41 Q1 * B * Z1**T = (Q1*Q) * T * (Z1*Z)**T
42 If Q1 is the orthogonal matrix from the QR factorization of B in the
43 original equation A*x = lambda*B*x, then DGGHRD reduces the original
44 problem to generalized Hessenberg form.
45
47 COMPQ (input) CHARACTER*1
48 = 'N': do not compute Q;
49 = 'I': Q is initialized to the unit matrix, and the orthogonal
50 matrix Q is returned; = 'V': Q must contain an orthogonal
51 matrix Q1 on entry, and the product Q1*Q is returned.
52
53 COMPZ (input) CHARACTER*1
54 = 'N': do not compute Z;
55 = 'I': Z is initialized to the unit matrix, and the orthogonal
56 matrix Z is returned; = 'V': Z must contain an orthogonal
57 matrix Z1 on entry, and the product Z1*Z is returned.
58
59 N (input) INTEGER
60 The order of the matrices A and B. N >= 0.
61
62 ILO (input) INTEGER
63 IHI (input) INTEGER ILO and IHI mark the rows and columns
64 of A which are to be reduced. It is assumed that A is already
65 upper triangular in rows and columns 1:ILO-1 and IHI+1:N. ILO
66 and IHI are normally set by a previous call to SGGBAL; other‐
67 wise they should be set to 1 and N respectively. 1 <= ILO <=
68 IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
69
70 A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
71 On entry, the N-by-N general matrix to be reduced. On exit,
72 the upper triangle and the first subdiagonal of A are overwrit‐
73 ten with the upper Hessenberg matrix H, and the rest is set to
74 zero.
75
76 LDA (input) INTEGER
77 The leading dimension of the array A. LDA >= max(1,N).
78
79 B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
80 On entry, the N-by-N upper triangular matrix B. On exit, the
81 upper triangular matrix T = Q**T B Z. The elements below the
82 diagonal are set to zero.
83
84 LDB (input) INTEGER
85 The leading dimension of the array B. LDB >= max(1,N).
86
87 Q (input/output) DOUBLE PRECISION array, dimension (LDQ, N)
88 On entry, if COMPQ = 'V', the orthogonal matrix Q1, typically
89 from the QR factorization of B. On exit, if COMPQ='I', the
90 orthogonal matrix Q, and if COMPQ = 'V', the product Q1*Q. Not
91 referenced if COMPQ='N'.
92
93 LDQ (input) INTEGER
94 The leading dimension of the array Q. LDQ >= N if COMPQ='V' or
95 'I'; LDQ >= 1 otherwise.
96
97 Z (input/output) DOUBLE PRECISION array, dimension (LDZ, N)
98 On entry, if COMPZ = 'V', the orthogonal matrix Z1. On exit,
99 if COMPZ='I', the orthogonal matrix Z, and if COMPZ = 'V', the
100 product Z1*Z. Not referenced if COMPZ='N'.
101
102 LDZ (input) INTEGER
103 The leading dimension of the array Z. LDZ >= N if COMPZ='V' or
104 'I'; LDZ >= 1 otherwise.
105
106 INFO (output) INTEGER
107 = 0: successful exit.
108 < 0: if INFO = -i, the i-th argument had an illegal value.
109
111 This routine reduces A to Hessenberg and B to triangular form by an
112 unblocked reduction, as described in _Matrix_Computations_, by Golub
113 and Van Loan (Johns Hopkins Press.)
114
115
116
117 LAPACK routine (version 3.2) November 2008 DGGHRD(1)