31 #ifndef ETL_CUMULATIVE_MOVING_AVERAGE_INCLUDED
32 #define ETL_CUMULATIVE_MOVING_AVERAGE_INCLUDED
39 namespace private_cumulative_moving_average
45 template <
typename TCMA>
94 const size_t SAMPLE_SIZE,
95 const size_t SCALING = 1U,
107 template <
typename T, const
size_t SAMPLE_SIZE_, const
size_t SCALING_>
117 static const sample_t SAMPLES =
static_cast<sample_t
>(SAMPLE_SIZE_);
118 static const scale_t SCALE =
static_cast<scale_t
>(SCALING_);
122 typedef T value_type;
125 static const size_t SAMPLE_SIZE = SAMPLE_SIZE_;
126 static const size_t SCALING = SCALING_;
133 : average(initial_value * SCALE)
143 average = (initial_value * SCALE);
153 average += SCALE * new_value;
154 average /= SAMPLES + sample_t(1);
186 template <
typename T, const
size_t SCALING_>
194 static const scale_t SCALE =
static_cast<scale_t
>(SCALING_);
198 typedef T value_type;
201 static const size_t SCALING = SCALING_;
208 : average(initial_value * SCALE)
209 , samples(sample_size)
219 average = (initial_value * SCALE);
228 samples = sample_t(sample_size);
238 average += SCALE * new_value;
239 average /= samples + sample_t(1);
272 template <
typename T, const
size_t SAMPLE_SIZE_>
279 typedef T value_type;
282 static const size_t SAMPLE_SIZE = SAMPLE_SIZE_;
289 : reciprocal_samples_plus_1(T(1.0) / T(SAMPLE_SIZE_ + 1U))
290 , average(initial_value)
300 average = initial_value;
307 void add(
const T new_value)
309 average += (new_value - average) * reciprocal_samples_plus_1;
332 const T reciprocal_samples_plus_1;
342 template <
typename T>
349 typedef T value_type;
357 : reciprocal_samples_plus_1(T(1.0) / T(sample_size + 1U))
358 , average(initial_value)
368 average = initial_value;
377 reciprocal_samples_plus_1 = T(1.0) / (T(sample_size) + T(1));
384 void add(
const T new_value)
386 average += (new_value - average) * reciprocal_samples_plus_1;
409 T reciprocal_samples_plus_1;
Definition: cumulative_moving_average.h:188
void set_sample_size(const size_t sample_size)
Definition: cumulative_moving_average.h:226
T value() const
Definition: cumulative_moving_average.h:246
void clear(const T initial_value)
Definition: cumulative_moving_average.h:217
add_insert_iterator input()
Definition: cumulative_moving_average.h:255
cumulative_moving_average(const T initial_value, const size_t sample_size)
Definition: cumulative_moving_average.h:207
void add(T new_value)
Definition: cumulative_moving_average.h:235
Definition: cumulative_moving_average.h:344
T value() const
Definition: cumulative_moving_average.h:393
void clear(const T initial_value)
Definition: cumulative_moving_average.h:366
void add(const T new_value)
Definition: cumulative_moving_average.h:384
cumulative_moving_average(const T initial_value, const size_t sample_size)
Definition: cumulative_moving_average.h:356
add_insert_iterator input()
Definition: cumulative_moving_average.h:402
void set_sample_size(const size_t sample_size)
Definition: cumulative_moving_average.h:375
Definition: cumulative_moving_average.h:274
add_insert_iterator input()
Definition: cumulative_moving_average.h:325
T value() const
Definition: cumulative_moving_average.h:316
void add(const T new_value)
Definition: cumulative_moving_average.h:307
cumulative_moving_average(const T initial_value)
Definition: cumulative_moving_average.h:288
void clear(const T initial_value)
Definition: cumulative_moving_average.h:298
Definition: cumulative_moving_average.h:109
void clear(const T initial_value)
Definition: cumulative_moving_average.h:141
cumulative_moving_average(const T initial_value)
Definition: cumulative_moving_average.h:132
T value() const
Definition: cumulative_moving_average.h:161
void add(T new_value)
Definition: cumulative_moving_average.h:150
add_insert_iterator input()
Definition: cumulative_moving_average.h:170
Definition: cumulative_moving_average.h:98
Definition: cumulative_moving_average.h:47
conditional
Definition: type_traits_generator.h:1202
is_floating_point
Definition: type_traits_generator.h:971
is_integral
Definition: type_traits_generator.h:941
Definition: absolute.h:37
iterator
Definition: iterator.h:422