27 #ifndef MLN_ACCU_STAT_MEDIAN_H_HH
28 # define MLN_ACCU_STAT_MEDIAN_H_HH
34 # include <mln/accu/internal/base.hh>
35 # include <mln/accu/histo.hh>
36 # include <mln/value/set.hh>
97 unsigned card()
const {
return h_.sum(); }
125 # ifndef MLN_INCLUDE_ONLY
127 template <
typename V>
136 template <
typename V>
142 sum_minus_ = rhs.sum_minus_;
143 sum_plus_ = rhs.sum_plus_;
151 template <
typename V>
167 template <
typename V>
176 for (
unsigned i = 0; i < i_; ++i)
177 sum_minus_ += other.h_[i];
180 for (
unsigned i = i_ + 1; i < h_.nvalues(); ++i)
181 sum_plus_ += other.h_[i];
187 template <
typename V>
192 mln_precondition(h_(t) != 0);
204 template <
typename V>
214 if (2 * sum_minus_ > h_.sum())
217 if (2 * sum_plus_ > h_.sum())
223 if (sum_plus_ > sum_minus_)
230 template <
typename V>
241 sum_minus_ -= h_[i_];
243 while (2 * sum_minus_ > h_.sum());
247 template <
typename V>
254 sum_minus_ += h_[i_];
260 while (2 * sum_plus_ > h_.sum());
264 template <
typename V>
272 i_ = (s_.index_of(mln_max(argument))
273 - s_.index_of(mln_min(argument))) / 2;
278 template <
typename V>
280 const typename median_h<V>::argument&
288 template <
typename V>
290 const accu::histo<V>&
296 template <
typename V>
304 # endif // ! MLN_INCLUDE_ONLY
312 #endif // ! MLN_ACCU_STAT_MEDIAN_H_HH