31#ifndef ETL_VARIANCE_INCLUDED
32#define ETL_VARIANCE_INCLUDED
43 namespace private_variance
48 template <
typename TInput,
typename TCalc>
57 template <
typename TCalc>
66 template <
typename TCalc>
69 typedef double calc_t;
76 namespace private_variance
78 template<
typename T =
void>
81 static ETL_CONSTANT
bool Sample =
false;
82 static ETL_CONSTANT
bool Population =
true;
99 template <
bool Variance_Type,
typename TInput,
typename TCalc = TInput>
106 static ETL_CONSTANT
int Adjustment = (
Variance_Type == variance_type::Population) ? 0 : 1;
108 typedef typename private_variance::variance_traits<TInput, TCalc>::calc_t calc_t;
123 template <
typename TIterator>
135 sum_of_squares +=
TCalc(value * value);
144 template <
typename TIterator>
147 while (first != last)
167 template <
typename TIterator>
180 variance_value = 0.0;
195 return variance_value;
219 sum_of_squares = calc_t(0);
222 variance_value = 0.0;
228 calc_t sum_of_squares;
231 mutable double variance_value;
232 mutable bool recalculate;
Variance.
Definition variance.h:103
size_t count() const
Get the total number added entries.
Definition variance.h:209
double get_variance() const
Get the variance.
Definition variance.h:176
variance(TIterator first, TIterator last)
Constructor.
Definition variance.h:124
void add(TInput value)
Add a pair of values.
Definition variance.h:133
void add(TIterator first, TIterator last)
Add a range.
Definition variance.h:145
void operator()(TInput value)
Definition variance.h:158
variance()
Constructor.
Definition variance.h:115
void clear()
Clear the variance.
Definition variance.h:217
bitset_ext
Definition absolute.h:38
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:314
binary_function
Definition functional.h:161
Types for generic variance.
Definition variance.h:50