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

NAME

6       CGGHRD  - a pair of complex matrices (A,B) to generalized upper Hessen‐
7       berg form using unitary transformations, where A is  a  general  matrix
8       and B is upper triangular
9

SYNOPSIS

11       SUBROUTINE CGGHRD( 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           COMPLEX        A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z( LDZ, * )
19

PURPOSE

21       CGGHRD reduces a pair of complex matrices (A,B)  to  generalized  upper
22       Hessenberg  form  using  unitary  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 unitary matrix Q to the left side of the equation.
28
29       This subroutine simultaneously reduces A to a Hessenberg matrix H:
30          Q**H*A*Z = H
31       and transforms B to another upper triangular matrix T:
32          Q**H*B*Z = T
33       in order to reduce the problem to its standard form
34          H*y = lambda*T*y
35       where y = Z**H*x.
36
37       The unitary matrices Q and Z are determined as products of Givens rota‐
38       tions.  They may either be formed explicitly, or they may be postmulti‐
39       plied into input matrices Q1 and Z1, so that
40            Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H
41            Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H
42       If Q1 is the unitary matrix from the QR factorization of B in the orig‐
43       inal  equation A*x = lambda*B*x, then CGGHRD reduces the original prob‐
44       lem to generalized Hessenberg form.
45
46

ARGUMENTS

48       COMPQ   (input) CHARACTER*1
49               = 'N': do not compute Q;
50               = 'I': Q is initialized to the unit  matrix,  and  the  unitary
51               matrix Q is returned; = 'V': Q must contain a unitary matrix Q1
52               on entry, and the product Q1*Q is returned.
53
54       COMPZ   (input) CHARACTER*1
55               = 'N': do not compute Q;
56               = 'I': Q is initialized to the unit  matrix,  and  the  unitary
57               matrix Q is returned; = 'V': Q must contain a unitary matrix Q1
58               on entry, and the product Q1*Q is returned.
59
60       N       (input) INTEGER
61               The order of the matrices A and B.  N >= 0.
62
63       ILO     (input) INTEGER
64               IHI     (input) INTEGER ILO and IHI mark the rows  and  columns
65               of  A which are to be reduced.  It is assumed that A is already
66               upper triangular in rows and columns 1:ILO-1 and IHI+1:N.   ILO
67               and  IHI  are normally set by a previous call to CGGBAL; other‐
68               wise they should be set to 1 and N respectively.  1 <=  ILO  <=
69               IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
70
71       A       (input/output) COMPLEX array, dimension (LDA, N)
72               On  entry,  the  N-by-N general matrix to be reduced.  On exit,
73               the upper triangle and the first subdiagonal of A are overwrit‐
74               ten  with the upper Hessenberg matrix H, and the rest is set to
75               zero.
76
77       LDA     (input) INTEGER
78               The leading dimension of the array A.  LDA >= max(1,N).
79
80       B       (input/output) COMPLEX array, dimension (LDB, N)
81               On entry, the N-by-N upper triangular matrix B.  On  exit,  the
82               upper  triangular  matrix T = Q**H B Z.  The elements below the
83               diagonal are set to zero.
84
85       LDB     (input) INTEGER
86               The leading dimension of the array B.  LDB >= max(1,N).
87
88       Q       (input/output) COMPLEX array, dimension (LDQ, N)
89               On entry, if COMPQ = 'V', the unitary matrix Q1, typically from
90               the  QR factorization of B.  On exit, if COMPQ='I', the unitary
91               matrix Q, and if COMPQ = 'V', the product Q1*Q.  Not referenced
92               if COMPQ='N'.
93
94       LDQ     (input) INTEGER
95               The leading dimension of the array Q.  LDQ >= N if COMPQ='V' or
96               'I'; LDQ >= 1 otherwise.
97
98       Z       (input/output) COMPLEX array, dimension (LDZ, N)
99               On entry, if COMPZ = 'V', the unitary matrix Z1.  On  exit,  if
100               COMPZ='I',  the unitary matrix Z, and if COMPZ = 'V', the prod‐
101               uct Z1*Z.  Not referenced if COMPZ='N'.
102
103       LDZ     (input) INTEGER
104               The leading dimension of the array Z.  LDZ >= N if COMPZ='V' or
105               'I'; LDZ >= 1 otherwise.
106
107       INFO    (output) INTEGER
108               = 0:  successful exit.
109               < 0:  if INFO = -i, the i-th argument had an illegal value.
110

FURTHER DETAILS

112       This  routine  reduces  A  to Hessenberg and B to triangular form by an
113       unblocked reduction, as described in  _Matrix_Computations_,  by  Golub
114       and van Loan (Johns Hopkins Press).
115
116
117
118
119 LAPACK routine (version 3.1)    November 2006                       CGGHRD(1)
Impressum