There are two prototypes of tgexc
            available, please see below. 
tgexc( const fortran_bool_t wantq, const fortran_bool_t wantz, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z, int_t& ifst, int_t& ilst );
tgexc( const fortran_bool_t wantq, const fortran_bool_t wantz, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z, const int_t ifst, int_t& ilst );
            tgexc (short for $FRIENDLY_NAME)
            provides a C++ interface to LAPACK routines STGEXC, DTGEXC, CTGEXC, and
            ZTGEXC. tgexc reorders
            the generalized Schur decomposition of a complex matrix pair (A,B), using
            an unitary equivalence transformation (A, B) := Q * (A, B) * Z', so that
            the diagonal block of (A, B) with row index IFST is moved to row ILST.
          
(A, B) must be in generalized Schur canonical form, that is, A and B are both upper triangular.
Optionally, the matrices Q and Z of generalized Schur vectors are updated.
Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)' Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
            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.335. Dispatching of tgexc
| Value type of MatrixA | LAPACK routine | 
|---|---|
| 
                       | STGEXC | 
| 
                       | DTGEXC | 
| 
                       | CTGEXC | 
| 
                       | ZTGEXC | 
            Defined in header boost/numeric/bindings/lapack/computational/tgexc.hpp.
          
Parameters
The definition of term 1
The definition of term 2
The definition of term 3.
Definitions may contain paragraphs.
#include <boost/numeric/bindings/lapack/computational/tgexc.hpp> using namespace boost::numeric::bindings; lapack::tgexc( x, y, z );
this will output
[5] 0 1 2 3 4 5