1DGGHRD(1)                LAPACK routine (version 3.2)                DGGHRD(1)
2
3
4

NAME

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

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

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)
Impressum