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