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