[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section tgsen]

[heading Prototype]
There are two prototypes of `tgsen` available, please see below.
``
tgsen( const int_t ijob, const fortran_bool_t wantq,
        const fortran_bool_t wantz, const VectorSELECT& select, MatrixA& a,
        MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
        VectorBETA& beta, MatrixQ& q, MatrixZ& z, int_t& m,
        Scalar >, Scalar >, VectorDIF& dif );
``

``
tgsen( const int_t ijob, const fortran_bool_t wantq,
        const fortran_bool_t wantz, const VectorSELECT& select, MatrixA& a,
        MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixQ& q,
        MatrixZ& z, int_t& m, Scalar >, Scalar >, VectorDIF& dif );
``


[heading Description]

`tgsen` (short for $FRIENDLY_NAME) provides a C++
interface to LAPACK routines STGSEN, DTGSEN, CTGSEN, and ZTGSEN. 
`tgsen` reorders the generalized Schur decomposition of a complex
matrix pair (A, B) (in terms of an unitary equivalence trans-
formation Q' * (A, B) * Z), so that a selected cluster of eigenvalues
appears in the leading diagonal blocks of the pair (A,B). The leading
columns of Q and Z form unitary bases of the corresponding left and
right eigenspaces (deflating subspaces). (A, B) must be in
generalized Schur canonical form, that is, A and B are both upper
triangular.

`tgsen` also computes the generalized eigenvalues

w(j)= ALPHA(j) / BETA(j)

of the reordered matrix pair (A, B).

Optionally, the routine computes estimates of reciprocal condition
numbers for eigenvalues and eigenspaces. These are Difu[(A11,B11),
(A22,B22)] and Difl[(A11,B11), (A22,B22)], i.e. the separation(s)
between the matrix pairs (A11, B11) and (A22,B22) that correspond to
the selected cluster and the eigenvalues outside the cluster, resp.,
and norms of "projections" onto left and right eigenspaces w.r.t.
the selected cluster in the (1,1)-block.

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

[table Dispatching of tgsen
[  [ Value type of VectorSELECT ] [LAPACK routine] ]
[  [`float`][STGSEN] ]
[  [`double`][DTGSEN] ]
[  [`complex<float>`][CTGSEN] ]
[  [`complex<double>`][ZTGSEN] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/computational/tgsen.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/tgsen.hpp>
using namespace boost::numeric::bindings;

lapack::tgsen( 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/stgsen.f stgsen.f], [@http://www.netlib.org/lapack/double/dtgsen.f dtgsen.f], [@http://www.netlib.org/lapack/complex/ctgsen.f ctgsen.f], and [@http://www.netlib.org/lapack/complex16/ztgsen.f ztgsen.f] at Netlib.

[endsect]
