PrevUpHomeNext
gghrd
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 );

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**HA*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 = lambdaT*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 * (Z1Z)H Q1 * B * Z1*H = (Q1*Q) * T * (Z1Z)*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 1.332. Dispatching of gghrd

Value type of MatrixA

LAPACK routine

float

SGGHRD

double

DGGHRD

complex<float>

CGGHRD

complex<double>

ZGGHRD


Definition

Defined in header boost/numeric/bindings/lapack/computational/gghrd.hpp.

Parameters or Requirements on Types

Parameters

MatrixA

The definition of term 1

MatrixB

The definition of term 2

MatrixC

The definition of term 3.

Definitions may contain paragraphs.

Complexity
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

Notes
See Also

PrevUpHomeNext