There is one prototype of iter_posv
available, please see below.
iter_posv( MatrixA& a, const MatrixB& b, MatrixX& x, int_t& iter );
iter_posv
(short for
$FRIENDLY_NAME) provides a C++ interface to LAPACK routines DSPOSV and
ZCPOSV. iter_posv
computes
the solution to a complex system of linear equations A * X = B, where
A is an N-by-N Hermitian positive definite matrix and X and B are N-by-NRHS
matrices.
iter_posv
first attempts
to factorize the matrix in COMPLEX and use this factorization within
an iterative refinement procedure to produce a solution with COMPLEX*16
normwise backward error quality (see below). If the approach fails the
method switches to a COMPLEX*16 factorization and solve.
The iterative refinement is not going to be a winning strategy if the ratio COMPLEX performance over COMPLEX*16 performance is too small. A reasonable strategy should take the number of right-hand sides and the size of the matrix into account. This might be done with a call to ILAENV in the future. Up to now, we always try iterative refinement.
The iterative refinement process is stopped if ITER > ITERMAX or for all the RHS we have: RNRM < SQRT(N)*XNRM*ANRM*EPS*BWDMAX where o ITER is the number of the current iteration in the iterative refinement process o RNRM is the infinity-norm of the residual o XNRM is the infinity-norm of the solution o ANRM is the infinity-operator-norm of the matrix A o EPS is the machine epsilon returned by DLAMCH('Epsilon') The value ITERMAX and BWDMAX are fixed to 30 and 1.0D+00 respectively.
The selection of the LAPACK routine is done during compile-time, and
is determined by the type of values contained in type MatrixA
.
The type of values is obtained through the value_type
meta-function typename value_type<MatrixA>::type
. The dispatching table below illustrates
to which specific routine the code path will be generated.
Table 1.138. Dispatching of iter_posv
Value type of MatrixA |
LAPACK routine |
---|---|
|
DSPOSV |
|
ZCPOSV |
Defined in header boost/numeric/bindings/lapack/driver/iter_posv.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/iter_posv.hpp> using namespace boost::numeric::bindings; lapack::iter_posv( x, y, z );
this will output
[5] 0 1 2 3 4 5