30 #ifndef SHARK_LINALG_BLAS_KERNELS_DEFAULT_GEMV_HPP 31 #define SHARK_LINALG_BLAS_KERNELS_DEFAULT_GEMV_HPP 33 #include "../../matrix_proxy.hpp" 34 #include "../../vector_expression.hpp" 35 #include <boost/mpl/bool.hpp> 37 namespace shark {
namespace blas {
namespace bindings {
40 template<
class ResultV,
class M,
class V>
42 matrix_expression<M>
const& A,
43 vector_expression<V>
const& x,
44 vector_expression<ResultV>& result,
45 typename ResultV::value_type alpha,
48 typedef typename ResultV::value_type value_type;
49 for(std::size_t i = 0; i != A().size1();++i){
51 if(value != value_type())
52 result()(i) += alpha* value;
57 template<
class ResultV,
class M,
class V>
59 matrix_expression<M>
const& A,
60 vector_expression<V>
const& x,
61 vector_expression<ResultV>& result,
62 typename ResultV::value_type alpha,
65 typedef typename V::const_iterator iterator;
66 typedef typename ResultV::value_type value_type;
67 iterator end = x().end();
68 for(iterator it = x().begin(); it != end; ++it) {
69 value_type multiplier = alpha * (*it);
76 template<
class ResultV,
class M,
class V>
78 matrix_expression<M>
const& A,
79 vector_expression<V>
const& x,
80 vector_expression<ResultV>& result,
81 typename ResultV::value_type alpha,
84 gemv_impl(A,x,result,alpha,row_major());
88 template<
class ResultV,
class M,
class V>
90 matrix_expression<M>
const& A,
91 vector_expression<V>
const& x,
92 vector_expression<ResultV>& result,
93 typename ResultV::value_type alpha,
98 typedef typename M::orientation orientation;
100 gemv_impl(A, x, result, alpha, orientation());