##### tgevc

###### Prototype

There is one prototype of `tgevc` available, please see below.

    tgevc( const Side side, const char howmny, const VectorSELECT& select,
            const MatrixS& s, const MatrixP& p, MatrixVL& vl, MatrixVR& vr,
            const int_t mm, int_t& m );

###### Description

`tgevc` (short for $FRIENDLY_NAME) provides a C++ interface to LAPACK routines STGEVC, DTGEVC, CTGEVC, and ZTGEVC. `tgevc` computes some or all of the right and/or left eigenvectors of a pair of complex matrices (S,P), where S and P are upper triangular. Matrix pairs of this type are produced by the generalized Schur factorization of a complex matrix pair (A,B):

A = QS*Z*H, B = QP*Z*H

as computed by ZGGHRD + ZHGEQZ.

The right eigenvector x and the left eigenvector y of (S,P) corresponding to an eigenvalue w are defined by:

S*x = wP*x, (y*H)S = w(y**H)*P,

where y**H denotes the conjugate tranpose of y. The eigenvalues are not input to this routine, but are computed directly from the diagonal elements of S and P.

This routine returns the matrices X and/or Y of right and left eigenvectors of (S,P), or the products Z*X and/or Q*Y, where Z and Q are input matrices. If Q and Z are the unitary factors from the generalized Schur factorization of a matrix pair (A,B), then Z*X and Q*Y are the matrices of right and left eigenvectors of (A,B).

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 1.334. Dispatching of tgevc

Value type of VectorSELECT | LAPACK routine
--- | ---
`float` | STGEVC
`double` | DTGEVC
`complex<float>` | CTGEVC
`complex<double>` | ZTGEVC

###### Definition

Defined in header `boost/numeric/bindings/lapack/computational/tgevc.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/tgevc.hpp>
    using namespace boost::numeric::bindings;

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

this will output

    [5] 0 1 2 3 4 5

###### Notes

###### See Also

- Originating Fortran source files stgevc.f, dtgevc.f, ctgevc.f, and ztgevc.f at Netlib.