26 #ifndef MLN_ACCU_STAT_MEAN_HH
27 # define MLN_ACCU_STAT_MEAN_HH
35 # include <mln/accu/internal/base.hh>
36 # include <mln/accu/math/count.hh>
37 # include <mln/accu/math/sum.hh>
50 template <
typename T,
typename S,
typename M>
67 template <
typename T,
68 typename S = mln_sum(
T),
88 template <
typename T,
typename S,
typename M>
89 struct accumulator_< accu::stat::mean<T, S, M> >
91 typedef accumulator::has_untake::yes
has_untake;
93 typedef accumulator::has_stop::no
has_stop;
94 typedef accumulator::when_pix::use_v
when_pix;
116 template <
typename T,
117 typename S = mln_sum(
T),
147 mln_result(accu::math::
sum<
T>)
sum() const;
157 template <typename I, typename S, typename M>
158 struct
mean< util::pix<I>, S,M >;
161 # ifndef MLN_INCLUDE_ONLY
163 template <
typename T,
typename S,
typename M>
170 template <
typename T,
typename S,
typename M>
179 template <
typename T,
typename S,
typename M>
187 template <
typename T,
typename S,
typename M>
192 count_.take(other.count_);
193 sum_.take(other.sum_);
196 template <
typename T,
typename S,
typename M>
204 template <
typename T,
typename S,
typename M>
209 count_.untake(other.count_);
210 sum_.untake(other.sum_);
213 template <
typename T,
typename S,
typename M>
218 unsigned n = count_.to_result();
221 return static_cast<M
>(sum_.to_result() / n);
224 template <
typename T,
typename S,
typename M>
226 mean<T,S,M>::operator M()
const
231 template <
typename T,
typename S,
typename M>
236 return count_.to_result() != 0;
239 template <
typename T,
typename S,
typename M>
241 mln_result(accu::math::count<T>)
244 return count_.to_result();
248 template <
typename T,
typename S,
typename M>
250 mln_result(accu::math::sum<T>)
253 return sum_.to_result();
256 # endif // ! MLN_INCLUDE_ONLY
264 #endif // ! MLN_ACCU_STAT_MEAN_HH