##### pttrs

###### Prototype

There are two prototypes of `pttrs` available, please see below.

    pttrs( const VectorD& d, const VectorE& e, MatrixB& b );

    pttrs( const char uplo, const VectorD& d, const VectorE& e, MatrixB& b );

###### Description

`pttrs` (short for $FRIENDLY_NAME) provides a C++ interface to LAPACK routines SPTTRS, DPTTRS, CPTTRS, and ZPTTRS. `pttrs` solves a tridiagonal system of the form A * X = B using the factorization A = U'*D*U or A = L*D*L' computed by ZPTTRF. D is a diagonal matrix specified in the vector D, U (or L) is a unit bidiagonal matrix whose superdiagonal (subdiagonal) is specified in the vector E, and X and B are N by NRHS matrices.

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.285. Dispatching of pttrs

Value type of VectorD | LAPACK routine
--- | ---
`float` | SPTTRS
`double` | DPTTRS
`complex<float>` | CPTTRS
`complex<double>` | ZPTTRS

###### Definition

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

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

this will output

    [5] 0 1 2 3 4 5

###### Notes

###### See Also

- Originating Fortran source files spttrs.f, dpttrs.f, cpttrs.f, and zpttrs.f at Netlib.