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