31#ifndef ETL_STANDARD_DEVIATION_INCLUDED
32#define ETL_STANDARD_DEVIATION_INCLUDED
48 template <
typename TInput,
typename TCalc>
57 template <
typename TCalc>
66 template <
typename TCalc>
69 typedef double calc_t;
78 template<
typename T =
void>
81 static ETL_CONSTANT
bool Sample =
false;
82 static ETL_CONSTANT
bool Population =
true;
86 ETL_CONSTANT
bool standard_deviation_type_helper<T>::Sample;
89 ETL_CONSTANT
bool standard_deviation_type_helper<T>::Population;
99 template <
bool Standard_Deviation_Type,
typename TInput,
typename TCalc = TInput>
106 static ETL_CONSTANT
int Adjustment = (Standard_Deviation_Type == standard_deviation_type::Population) ? 0 : 1;
108 typedef typename private_standard_deviation::standard_deviation_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 return variance_value;
190 return standard_deviation_value;
196 operator double()
const
206 return size_t(counter);
214 sum_of_squares = calc_t(0);
217 variance_value = 0.0;
218 standard_deviation_value = 0.0;
227 void calculate()
const
231 standard_deviation_value = 0.0;
232 variance_value = 0.0;
236 double n = double(counter);
237 double adjustment = 1.0 / (n * (n - Adjustment));
239 double square_of_sum = (sum * sum);
241 variance_value = ((n * sum_of_squares) - square_of_sum) * adjustment;
243 if (variance_value > 0)
245 standard_deviation_value =
sqrt(variance_value);
253 calc_t sum_of_squares;
256 mutable double variance_value;
257 mutable double standard_deviation_value;
258 mutable bool recalculate;
void operator()(TInput value)
Definition standard_deviation.h:158
size_t count() const
Get the total number added entries.
Definition standard_deviation.h:204
double get_standard_deviation() const
Get the standard_deviation.
Definition standard_deviation.h:186
void clear()
Clear the histogram.
Definition standard_deviation.h:212
void add(TInput value)
Add a pair of values.
Definition standard_deviation.h:133
double get_variance() const
Get the variance.
Definition standard_deviation.h:176
standard_deviation(TIterator first, TIterator last)
Constructor.
Definition standard_deviation.h:124
standard_deviation()
Constructor.
Definition standard_deviation.h:115
void add(TIterator first, TIterator last)
Add a range.
Definition standard_deviation.h:145
Standard Deviation Type.
Definition standard_deviation.h:44
bitset_ext
Definition absolute.h:39
binary_function
Definition functional.h:161
Types for generic standard_deviation.
Definition standard_deviation.h:50
Definition standard_deviation.h:80
Calculates the smallest value that, when squared, will be not greater than Value.
Definition sqrt.h:47
Definition standard_deviation.h:93