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

NAME

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

PURPOSE

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
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
38       The  orthogonal  matrices  Q and Z are determined as products of Givens
39       rotations.  They may either be formed explicitly, or they may be  post‐
40       multiplied into input matrices Q1 and Z1, so that
41
42            Q1 * A * Z1**T = (Q1*Q) * H * (Z1*Z)**T
43
44            Q1 * B * Z1**T = (Q1*Q) * T * (Z1*Z)**T
45
46       If  Q1  is  the orthogonal matrix from the QR factorization of B in the
47       original equation A*x = lambda*B*x, then SGGHRD  reduces  the  original
48       problem to generalized Hessenberg form.
49
50

ARGUMENTS

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

FURTHER DETAILS

116       This routine reduces A to Hessenberg and B to  triangular  form  by  an
117       unblocked  reduction,  as  described in _Matrix_Computations_, by Golub
118       and Van Loan (Johns Hopkins Press.)
119
120
121
122
123 LAPACK routine (version 3.1)    November 2006                       SGGHRD(1)
Impressum