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>
145 void add(TIterator first, TIterator last)
147 while (first != last)
167 template <
typename TIterator>
180 variance_value = 0.0;
184 double n = double(counter);
185 double adjustment = 1.0 / (n * (n - Adjustment)) ;
187 double square_of_sum = sum * sum;
189 variance_value = (n * sum_of_squares - square_of_sum) * adjustment;
195 return variance_value;
201 operator double()
const
211 return size_t(counter);
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
Definition: functional.h:125
Types for generic variance.
Definition: variance.h:50
Definition: variance.h:80
Definition: variance.h:93