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