There is one prototype of stevr
available, please see below.
stevr( const char jobz, const char range, const int_t n, VectorD& d, VectorE& e, const Scalar >, const Scalar >, const int_t il, const int_t iu, const Scalar >, int_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz );
stevr
(short for $FRIENDLY_NAME)
provides a C++ interface to LAPACK routines SSTEVR and DSTEVR. stevr
computes selected eigenvalues
and, optionally, eigenvectors of a real symmetric tridiagonal matrix
T. Eigenvalues and eigenvectors can be selected by specifying either
a range of values or a range of indices for the desired eigenvalues.
Whenever possible, stevr
calls DSTEMR to compute the eigenspectrum using Relatively Robust Representations.
DSTEMR computes eigenvalues by the dqds algorithm, while orthogonal eigenvectors
are computed from various "good" L D L^T representations (also
known as Relatively Robust Representations). Gram-Schmidt orthogonalization
is avoided as far as possible. More specifically, the various steps of
the algorithm are as follows. For the i-th unreduced block of T, (a)
Compute T - sigma_i = L_i D_i L_i^T, such that L_i D_i L_i^T is a relatively
robust representation, (b) Compute the eigenvalues, lambda_j, of L_i
D_i L_i^T to high relative accuracy by the dqds algorithm, (c) If there
is a cluster of close eigenvalues, "choose" sigma_i close to
the cluster, and go to step (a), (d) Given the approximate eigenvalue
lambda_j of L_i D_i L_i^T, compute the corresponding eigenvector by forming
a rank-revealing twisted factorization. The desired accuracy of the output
can be specified by the input parameter ABSTOL.
For more details, see "A new O(n^2) algorithm for the symmetric tridiagonal eigenvalueeigenvector problem", by Inderjit Dhillon, Computer Science Division Technical Report No. UCB/CSD-97-971, UC Berkeley, May 1997.
Note 1 : stevr
calls
DSTEMR when the full spectrum is requested on machines which conform
to the ieee-754 floating point standard. stevr
calls DSTEBZ and DSTEIN on non-ieee machines and when partial spectrum
requests are made.
Normal execution of DSTEMR may create NaNs and infinities and hence may abort due to a floating point exception in environments which do not handle NaNs and infinities in the ieee standard default manner.
The selection of the LAPACK routine is done during compile-time, and
is determined by the type of values contained in type VectorD
.
The type of values is obtained through the value_type
meta-function typename value_type<VectorD>::type
. The dispatching table below illustrates
to which specific routine the code path will be generated.
Defined in header boost/numeric/bindings/lapack/driver/stevr.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/driver/stevr.hpp> using namespace boost::numeric::bindings; lapack::stevr( x, y, z );
this will output
[5] 0 1 2 3 4 5