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