[/ 

THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!

]

[section laebz]

[heading Prototype]
There is one prototype of `laebz` available, please see below.
``
laebz( const int_t ijob, const int_t nitmax,
        const int_t n, const int_t minp,
        const int_t nbmin, const Scalar >, const Scalar >,
        const Scalar >, const VectorD& d, const VectorE& e,
        const VectorE2& e2, VectorNVAL& nval, MatrixAB& ab, VectorC& c,
        int_t& mout, MatrixNAB& nab );
``


[heading Description]

`laebz` (short for $FRIENDLY_NAME) provides a C++
interface to LAPACK routines SLAEBZ and DLAEBZ. 
`laebz` contains the iteration loops which compute and use the
function N(w), which is the count of eigenvalues of a symmetric
tridiagonal matrix T less than or equal to its argument w. It
performs a choice of two types of loops:

IJOB=1, followed by
IJOB=2: It takes as input a list of intervals and returns a list of
sufficiently small intervals whose union contains the same
eigenvalues as the union of the original intervals.
The input intervals are (AB(j,1),AB(j,2)], j=1,...,MINP.
The output interval (AB(j,1),AB(j,2)] will contain
eigenvalues NAB(j,1)+1,...,NAB(j,2), where 1 <= j <= MOUT.

IJOB=3: It performs a binary search in each input interval
(AB(j,1),AB(j,2)] for a point w(j) such that
N(w(j))=NVAL(j), and uses C(j) as the starting point of
the search. If such a w(j) is found, then on output
AB(j,1)=AB(j,2)=w. If no such w(j) is found, then on output
(AB(j,1),AB(j,2)] will be a small interval containing the
point where N(w) jumps through NVAL(j), unless that point
lies outside the initial interval.

Note that the intervals are in all cases half-open intervals,
i.e., of the form (a,b] , which includes b but not a .

To avoid underflow, the matrix should be scaled so that its largest
element is no greater than overflow**(1/2) * underflow**(1/4)
in absolute value. To assure the most accurate computation
of small eigenvalues, the matrix should be scaled to be
not much smaller than that, either.

See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal
Matrix", Report CS41, Computer Science Dept., Stanford
University, July 21, 1966

Note: the arguments are, in general, *not* checked for unreasonable
values.

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 laebz
[  [ Value type of VectorD ] [LAPACK routine] ]
[  [`float`][SLAEBZ] ]
[  [`double`][DLAEBZ] ]

]


[heading Definition]
Defined in header [headerref boost/numeric/bindings/lapack/auxiliary/laebz.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/auxiliary/laebz.hpp>
using namespace boost::numeric::bindings;

lapack::laebz( 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/slaebz.f slaebz.f] and [@http://www.netlib.org/lapack/double/dlaebz.f dlaebz.f] at Netlib.

[endsect]
