27 #ifndef SCRIBO_UTIL_INTEGRAL_SUM_SUM2_GLOBAL_MIN_FUNCTOR_HH
28 # define SCRIBO_UTIL_INTEGRAL_SUM_SUM2_GLOBAL_MIN_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;
62 const V& global_min()
const;
72 # ifndef MLN_INCLUDE_ONLY
74 template <
typename V,
typename S>
84 template <
typename V,
typename S>
87 integral_sum_sum2_global_min_functor<V,S>::begin_of_row()
93 template <
typename V,
typename S>
96 integral_sum_sum2_global_min_functor<V,S>::take(
const V& v)
105 template <
typename V,
typename S>
107 typename integral_sum_sum2_global_min_functor<V,S>::result
108 integral_sum_sum2_global_min_functor<V,S>::to_result_first_row()
const
110 return result(h_sum_, h_sum_2_);
113 template <
typename V,
typename S>
115 typename integral_sum_sum2_global_min_functor<V,S>::result
116 integral_sum_sum2_global_min_functor<V,S>::to_result(
const result& up_result)
const
118 return result(h_sum_ + up_result.first(),
119 h_sum_2_ + up_result.second());
122 template <
typename V,
typename S>
125 integral_sum_sum2_global_min_functor<V,S>::global_min()
const
130 template <
typename V,
typename S>
133 integral_sum_sum2_global_min_functor<V,S>::begin_of_col()
137 template <
typename V,
typename S>
140 integral_sum_sum2_global_min_functor<V,S>::end_of_col()
145 template <
typename V,
typename S>
148 integral_sum_sum2_global_min_functor<V,S>::end_of_row()
152 #endif // ! MLN_INCLUDE_ONLY
158 #endif // ! SCRIBO_UTIL_INTEGRAL_SUM_SUM2_GLOBAL_MIN_FUNCTOR_HH