typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value, typename VectorT1::value_type>::type inner_prod(VectorT1 const& v1, VectorT2 const& v2) { assert(v1.size() == v2.size() && bool("Vector sizes mismatch")); //std::cout << "stl .. " << std::endl; typename VectorT1::value_type result = 0; for (typename VectorT1::size_type i=0; i<v1.size(); ++i) result += v1[i] * v2[i]; return result; }
typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT1 >::type >::value, typename VectorT1::RealScalar>::type inner_prod(VectorT1 const& v1, VectorT2 const& v2) { //std::cout << "eigen .. " << std::endl; return v1.dot(v2); }
void copy_vec_to_vec(VectorT1 const & src, VectorT2 & dest) { for (vcl_size_t i=0; i<src.size(); ++i) dest[i] = src[i]; }