There are two prototypes of trevc
available, please see below.
trevc( const Side side, const char howmny, VectorSELECT& select, const MatrixT& t, MatrixVL& vl, MatrixVR& vr, const int_t mm, int_t& m );
trevc( const Side side, const char howmny, const VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr, const int_t mm, int_t& m );
trevc
(short for $FRIENDLY_NAME)
provides a C++ interface to LAPACK routines STREVC, DTREVC, CTREVC, and
ZTREVC. trevc
computes
some or all of the right and/or left eigenvectors of a complex upper
triangular matrix T. Matrices of this type are produced by the Schur
factorization of a complex general matrix: A = QT*Q*H,
as computed by ZHSEQR.
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = wx, (y*H)T = w(y**H)
where y**H denotes the conjugate transpose of the vector y. The eigenvalues are not input to this routine, but are read directly from the diagonal of T.
This routine returns the matrices X and/or Y of right and left eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an input matrix. If Q is the unitary factor that reduces a matrix A to Schur form T, then Q*X and Q*Y are the matrices of right and left eigenvectors of A.
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.231. Dispatching of trevc
Value type of VectorSELECT |
LAPACK routine |
---|---|
|
STREVC |
|
DTREVC |
|
CTREVC |
|
ZTREVC |
Defined in header boost/numeric/bindings/lapack/computational/trevc.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/trevc.hpp> using namespace boost::numeric::bindings; lapack::trevc( x, y, z );
this will output
[5] 0 1 2 3 4 5