[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section stevr]

[heading Prototype]
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 );
``


[heading Description]

`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 eigenvalue/eigenvector 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. 

[table Dispatching of stevr
[  [ Value type of VectorD ] [LAPACK routine] ]
[  [`float`][SSTEVR] ]
[  [`double`][DSTEVR] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/driver/stevr.hpp].


[heading Parameters or Requirements on Types]

[variablelist Parameters
    [[MatrixA] [The definition of term 1]]
    [[MatrixB] [The definition of term 2]]
    [[MatrixC] [
    The definition of term 3.

    Definitions may contain paragraphs.
    ]]
]


[heading Complexity]


[heading Example]
``
#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
``



[heading Notes]


[heading See Also]

* Originating Fortran source files [@http://www.netlib.org/lapack/single/sstevr.f sstevr.f] and [@http://www.netlib.org/lapack/double/dstevr.f dstevr.f] at Netlib.

[endsect]
