26 #ifndef MLN_ACCU_CONVOLVE_HH
27 # define MLN_ACCU_CONVOLVE_HH
33 # include <mln/accu/internal/base.hh>
34 # include <mln/value/ops.hh>
35 # include <mln/literal/zero.hh>
52 template <
typename T1,
typename T2,
53 typename R = mln_sum_product(T1, T2)>
55 private metal::converts_to< mln_sum_product(T1, T2),
66 void take(
const T1& t1,
const T2& t2);
79 typedef mln_sum_product(T1, T2)
S;
84 # ifndef MLN_INCLUDE_ONLY
86 template <
typename T1,
typename T2,
typename R>
93 template <
typename T1,
typename T2,
typename R>
102 template <
typename T1,
typename T2,
typename R>
107 s_ =
static_cast<S
>(s_ +
static_cast<S
>(t.first) * static_cast<S>(t.second));
110 template <
typename T1,
typename T2,
typename R>
115 s_ =
static_cast<S
>(s_ +
static_cast<S
>(t1) * static_cast<S>(t2));
118 template <
typename T1,
typename T2,
typename R>
123 s_ =
static_cast<S
>(s_ + other.s_);
126 template <
typename T1,
typename T2,
typename R>
134 template <
typename T1,
typename T2,
typename R>
142 # endif // ! MLN_INCLUDE_ONLY
149 #endif // ! MLN_ACCU_CONVOLVE_HH