27 #ifndef SCRIBO_UTIL_INTEGRAL_SUM_SUM2_FUNCTOR_HH
28 # define SCRIBO_UTIL_INTEGRAL_SUM_SUM2_FUNCTOR_HH
34 # include <mln/util/couple.hh>
35 # include <mln/trait/value_.hh>
43 template <
typename V,
typename S = mln_sum(V)>
49 void begin_of_first_row();
57 void take(
const V& v);
59 result to_result_first_row()
const;
68 # ifndef MLN_INCLUDE_ONLY
70 template <
typename V,
typename S>
79 template <
typename V,
typename S>
82 integral_sum_sum2_functor<V,S>::begin_of_row()
88 template <
typename V,
typename S>
91 integral_sum_sum2_functor<V,S>::take(
const V& v)
97 template <
typename V,
typename S>
99 typename integral_sum_sum2_functor<V,S>::result
100 integral_sum_sum2_functor<V,S>::to_result_first_row()
const
102 return result(h_sum, h_sum_2);
105 template <
typename V,
typename S>
107 typename integral_sum_sum2_functor<V,S>::result
108 integral_sum_sum2_functor<V,S>::to_result(
const result& up_result)
const
110 return result(h_sum + up_result.first(),
111 h_sum_2 + up_result.second());
114 template <
typename V,
typename S>
117 integral_sum_sum2_functor<V,S>::begin_of_col()
121 template <
typename V,
typename S>
124 integral_sum_sum2_functor<V,S>::end_of_col()
129 template <
typename V,
typename S>
132 integral_sum_sum2_functor<V,S>::end_of_row()
136 #endif // ! MLN_INCLUDE_ONLY
142 #endif // ! SCRIBO_UTIL_INTEGRAL_SUM_SUM2_FUNCTOR_HH