There is one prototype of ptsvx
available, please see below.
ptsvx( const char fact, const VectorD& d, const VectorE& e, VectorDF& df, VectorEF& ef, const MatrixB& b, MatrixX& x, Scalar >, VectorFERR& ferr, VectorBERR& berr );
ptsvx
(short for $FRIENDLY_NAME)
provides a C++ interface to LAPACK routines SPTSVX, DPTSVX, CPTSVX, and
ZPTSVX. ptsvx
uses the
factorization A = LD*L*H to compute
the solution to a complex system of linear equations A*X = B, where A
is an N-by-N Hermitian positive definite tridiagonal matrix and X and
B are N-by-NRHS matrices.
Error bounds on the solution and a condition estimate are also provided.
Description =
=
=
==
The following steps are performed:
1. If FACT = 'N', the matrix A is factored as A = LD*LH, where L is a unit lower bidiagonal matrix and D is diagonal. The factorization can also be regarded as having the form A = U*H*D*U.
2. If the leading i-by-i principal minor is not positive definite, then the routine returns with INFO = i. Otherwise, the factored form of A is used to estimate the condition number of the matrix A. If the reciprocal of the condition number is less than machine precision, INFO = N+1 is returned as a warning, but the routine still goes on to solve for X and compute error bounds as described below.
3. The system of equations is solved for X using the factored form of A.
4. Iterative refinement is applied to improve the computed solution matrix and calculate error bounds and backward error estimates for it.
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.146. Dispatching of ptsvx
Value type of VectorD |
LAPACK routine |
---|---|
|
SPTSVX |
|
DPTSVX |
|
CPTSVX |
|
ZPTSVX |
Defined in header boost/numeric/bindings/lapack/driver/ptsvx.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/ptsvx.hpp> using namespace boost::numeric::bindings; lapack::ptsvx( x, y, z );
this will output
[5] 0 1 2 3 4 5