There are two prototypes of hpmv
available, please see below.
hpmv( const Scalar >, const MatrixAP& ap, const VectorX& x, const Scalar >, VectorY& y );
hpmv( const Scalar alpha, const MatrixAP& ap, const VectorX& x, const Scalar beta, VectorY& y );
hpmv
(short for hermitian,
packed, matrix-vector operation) provides a C++ interface to BLAS routines
SSPMV, DSPMV, CHPMV, and ZHPMV. hpmv
performs the matrix-vector operation
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix, supplied in packed form.
The selection of the BLAS routine is done during compile-time, and is
determined by the type of values contained in type MatrixAP
.
The type of values is obtained through the value_type
meta-function typename value_type<MatrixAP>::type
. Table X below illustrates to
which specific routine this dispatching will take place.
Table 1.50. Dispatching of hpmv.
Value type of MatrixAP |
BLAS routine |
CBLAS routine |
CUBLAS routine |
---|---|---|---|
|
SSPMV |
cblas_sspmv |
cublasSspmv |
|
DSPMV |
cblas_dspmv |
Unavailable |
|
CHPMV |
cblas_chpmv |
cublasChpmv |
|
ZHPMV |
cblas_zhpmv |
Unavailable |
The original routines SSPMV, DSPMV, CHPMV, and ZHPMV have nine arguments,
whereas hpmv
requires
five arguments.
Defined in header boost/numeric/bindings/blas/level2/hpmv.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/blas/level2/hpmv.hpp> using namespace boost::numeric::bindings; blas::hpmv( x, y, z );
this will output
[5] 0 1 2 3 4 5