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

NAME

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

ARGUMENTS

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

FURTHER DETAILS

109       This  routine  reduces  A  to Hessenberg and B to triangular form by an
110       unblocked reduction, as described in  _Matrix_Computations_,  by  Golub
111       and van Loan (Johns Hopkins Press).
112
113
114
115 LAPACK routine (version 3.2)    November 2008                       CGGHRD(1)
Impressum