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

NAME

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

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

ARGUMENTS

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

FURTHER DETAILS

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