1 #ifndef VIENNACL_LINALG_INNER_PROD_HPP_ 
    2 #define VIENNACL_LINALG_INNER_PROD_HPP_ 
   41 #ifdef VIENNACL_WITH_ARMADILLO 
   45 template<
typename NumericT>
 
   52 #ifdef VIENNACL_WITH_EIGEN 
   56 template<
typename VectorT1, 
typename VectorT2>
 
   58                               typename VectorT1::RealScalar>::type
 
   66 #ifdef VIENNACL_WITH_MTL4 
   70 template<
typename VectorT1, 
typename VectorT2>
 
   72                               typename VectorT1::value_type>::type
 
   73 inner_prod(VectorT1 
const & v1, VectorT2 
const & v2)
 
   76   return mtl::dot(v1, v2);
 
   80 #ifdef VIENNACL_WITH_UBLAS 
   84 template<
typename VectorT1, 
typename VectorT2>
 
   86                               typename VectorT1::value_type>::type
 
   87 inner_prod(VectorT1 
const & v1, VectorT2 
const & v2)
 
   97 template<
typename VectorT1, 
typename VectorT2>
 
   99                               typename VectorT1::value_type>::type
 
  102   assert(v1.size() == v2.size() && bool(
"Vector sizes mismatch"));
 
  104   typename VectorT1::value_type result = 0;
 
  105   for (
typename VectorT1::size_type i=0; i<v1.size(); ++i)
 
  106     result += v1[i] * v2[i];
 
  114 template<
typename NumericT>
 
  127 template< 
typename LHS, 
typename RHS, 
typename OP, 
typename NumericT>
 
  141 template<
typename NumericT, 
typename LHS, 
typename RHS, 
typename OP>
 
  155 template<
typename LHS1, 
typename RHS1, 
typename OP1,
 
  156          typename LHS2, 
typename RHS2, 
typename OP2>
 
  171 template<
typename NumericT>
 
Simple enable-if variant that uses the SFINAE pattern. 
Dispatch facility for distinguishing between ublas, STL and ViennaCL types. 
This file provides the forward declarations for the main types used within ViennaCL. 
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)
viennacl::vector_expression< const vector_base< NumericT >, const vector_tuple< NumericT >, viennacl::op_inner_prod > inner_prod(vector_base< NumericT > const &x, vector_tuple< NumericT > const &y_tuple)
A proxy for scalar expressions (e.g. from inner vector products) 
An expression template class that represents a binary operation that yields a vector. 
viennacl::vector< float > v1
Tuple class holding pointers to multiple vectors. Mainly used as a temporary object returned from vie...
viennacl::vector< int > v2
A tag class representing inner products of two vectors. 
A collection of compile time type deductions. 
Simple enable-if variant that uses the SFINAE pattern.