[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section gghrd]

[heading Prototype]
There is one prototype of `gghrd` available, please see below.
``
gghrd( const char compq, const char compz, const int_t ilo,
        MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z );
``


[heading Description]

`gghrd` (short for $FRIENDLY_NAME) provides a C++
interface to LAPACK routines SGGHRD, DGGHRD, CGGHRD, and ZGGHRD. 
`gghrd` reduces a pair of complex matrices (A,B) to generalized upper
Hessenberg form using unitary transformations, where A is a
general matrix and B is upper triangular. The form of the
generalized eigenvalue problem is
A*x = lambda*B*x,
and B is typically made upper triangular by computing its QR
factorization and moving the unitary matrix Q to the left side
of the equation.

This subroutine simultaneously reduces A to a Hessenberg matrix H:
Q**H*A*Z = H
and transforms B to another upper triangular matrix T:
Q**H*B*Z = T
in order to reduce the problem to its standard form
H*y = lambda*T*y
where y = Z**H*x.

The unitary matrices Q and Z are determined as products of Givens
rotations. They may either be formed explicitly, or they may be
postmultiplied into input matrices Q1 and Z1, so that
Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H
Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H
If Q1 is the unitary matrix from the QR factorization of B in the
original equation A*x = lambda*B*x, then `gghrd` reduces the original
problem to generalized Hessenberg form.

The selection of the LAPACK routine is done during compile-time, 
and is determined by the type of values contained in type `MatrixA`.
The type of values is obtained through the `value_type` meta-function
 `typename value_type<MatrixA>::type`.
The dispatching table below illustrates to which specific routine 
the code path will be generated. 

[table Dispatching of gghrd
[  [ Value type of MatrixA ] [LAPACK routine] ]
[  [`float`][SGGHRD] ]
[  [`double`][DGGHRD] ]
[  [`complex<float>`][CGGHRD] ]
[  [`complex<double>`][ZGGHRD] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/computational/gghrd.hpp].


[heading Parameters or Requirements on Types]

[variablelist Parameters
    [[MatrixA] [The definition of term 1]]
    [[MatrixB] [The definition of term 2]]
    [[MatrixC] [
    The definition of term 3.

    Definitions may contain paragraphs.
    ]]
]


[heading Complexity]


[heading Example]
``
#include <boost/numeric/bindings/lapack/computational/gghrd.hpp>
using namespace boost::numeric::bindings;

lapack::gghrd( x, y, z );

``

this will output

``
[5] 0 1 2 3 4 5
``



[heading Notes]


[heading See Also]

* Originating Fortran source files [@http://www.netlib.org/lapack/single/sgghrd.f sgghrd.f], [@http://www.netlib.org/lapack/double/dgghrd.f dgghrd.f], [@http://www.netlib.org/lapack/complex/cgghrd.f cgghrd.f], and [@http://www.netlib.org/lapack/complex16/zgghrd.f zgghrd.f] at Netlib.

[endsect]
