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

NAME

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

ARGUMENTS

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

FURTHER DETAILS

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