27 #ifndef MLN_ACCU_MATH_SUM_HH
28 # define MLN_ACCU_MATH_SUM_HH
34 # include <mln/core/concept/meta_accumulator.hh>
35 # include <mln/accu/internal/base.hh>
37 # include <mln/util/pix.hh>
39 # include <mln/trait/value_.hh>
40 # include <mln/value/builtin/all.hh>
41 # include <mln/literal/zero.hh>
54 template <
typename T,
typename S>
68 template <
typename T,
typename S = mln_sum(T)>
85 template <
typename T,
typename S>
86 struct accumulator_< accu::
math::sum<T,S> >
88 typedef accumulator::has_untake::yes
has_untake;
90 typedef accumulator::has_stop::no
has_stop;
91 typedef accumulator::when_pix::not_ok
when_pix;
111 template <
typename T,
typename S = mln_sum(T)>
143 template <
typename I,
typename S>
144 struct sum< util::pix<I>, S >;
147 # ifndef MLN_INCLUDE_ONLY
151 template <typename T, typename S>
158 template <
typename T,
typename S>
166 template <
typename T,
typename S>
170 s_ +=
static_cast<S
>(t);
173 template <
typename T,
typename S>
177 s_ -=
static_cast<S
>(t);
180 template <
typename T,
typename S>
184 s_ =
static_cast<S
>(t);
187 template <
typename T,
typename S>
195 template <
typename T,
typename S>
203 template <
typename T,
typename S>
211 template <
typename T,
typename S>
219 template <
typename T,
typename S>
227 # endif // ! MLN_INCLUDE_ONLY
236 #endif // ! MLN_ACCU_MATH_SUM_HH