##### larre

###### Prototype

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

    larre( const char range, const int_t n, Scalar >, Scalar >,
            const int_t il, const int_t iu, VectorD& d,
            VectorE& e, VectorE2& e2, const Scalar >, const Scalar >,
            const Scalar >, int_t& nsplit, VectorISPLIT& isplit,
            int_t& m, VectorW& w, VectorWERR& werr, VectorWGAP& wgap,
            VectorIBLOCK& iblock, VectorINDEXW& indexw, VectorGERS& gers,
            Scalar > );

###### Description

`larre` (short for $FRIENDLY_NAME) provides a C++ interface to LAPACK routines SLARRE and DLARRE. To find the desired eigenvalues of a given real symmetric tridiagonal matrix T, `larre` sets any "small" off-diagonal elements to zero, and for each unreduced block T_i, it finds (a) a suitable shift at one end of the block's spectrum, (b) the base representation, T_i - sigma_i I = L_i D_i L_i^T, and (c) eigenvalues of each L_i D_i L_i^T. The representations and eigenvalues found are then used by DSTEMR to compute the eigenvectors of T. The accuracy varies depending on whether bisection is used to find a few eigenvalues or the dqds algorithm (subroutine DLASQ2) to conpute all and then discard any unwanted one. As an added benefit, `larre` also outputs the n Gerschgorin intervals for the matrices L_i D_i L_i^T.

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 1.348. Dispatching of larre

Value type of VectorD | LAPACK routine
--- | ---
`float` | SLARRE
`double` | DLARRE

###### Definition

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

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

this will output

    [5] 0 1 2 3 4 5

###### Notes

###### See Also

- Originating Fortran source files slarre.f and dlarre.f at Netlib.