31#ifndef ETL_CORRELATION_INCLUDED
32#define ETL_CORRELATION_INCLUDED
43 namespace private_correlation
48 template <
typename TInput,
typename TCalc>
57 template <
typename TCalc>
66 template <
typename TCalc>
69 typedef double calc_t;
76 namespace private_correlation
78 template<
typename T =
void>
81 static ETL_CONSTANT
bool Sample =
false;
82 static ETL_CONSTANT
bool Population =
true;
99 template <
bool Correlation_Type,
typename TInput,
typename TCalc = TInput>
106 static ETL_CONSTANT
int Adjustment = (
Correlation_Type == correlation_type::Population) ? 0 : 1;
108 typedef typename private_correlation::correlation_traits<TInput, TCalc>::calc_t calc_t;
123 template <
typename TIterator>
135 inner_product +=
TCalc(value1 * value2);
136 sum_of_squares1 +=
TCalc(value1 * value1);
137 sum_of_squares2 +=
TCalc(value2 * value2);
138 sum1 +=
TCalc(value1);
139 sum2 +=
TCalc(value2);
147 template <
typename TIterator>
171 template <
typename TIterator>
184 return covariance_value;
194 return correlation_value;
218 inner_product = calc_t(0);
219 sum_of_squares1 = calc_t(0);
220 sum_of_squares2 = calc_t(0);
224 covariance_value = 0.0;
225 correlation_value = 0.0;
234 void calculate()
const
238 correlation_value = 0.0;
239 covariance_value = 0.0;
265 covariance_value = ((
n * inner_product) - (sum1 * sum2)) *
adjustment;
277 calc_t inner_product;
278 calc_t sum_of_squares1;
279 calc_t sum_of_squares2;
283 mutable double covariance_value;
284 mutable double correlation_value;
285 mutable bool recalculate;
288 template <
bool Correlation_Type,
typename TInput,
typename TCalc>
289 ETL_CONSTANT
int correlation<Correlation_Type, TInput, TCalc>::Adjustment;
Correlation.
Definition correlation.h:103
double get_covariance() const
Get the correlation.
Definition correlation.h:180
void add(TIterator first1, TIterator last1, TIterator first2)
Add a range.
Definition correlation.h:148
void add(TInput value1, TInput value2)
Add a pair of values.
Definition correlation.h:133
void clear()
Clear the correlation.
Definition correlation.h:216
double get_correlation() const
Get the correlation.
Definition correlation.h:190
void operator()(TInput value1, TInput value2)
Definition correlation.h:162
correlation(TIterator first1, TIterator last1, TIterator first2)
Constructor.
Definition correlation.h:124
size_t count() const
Get the total number added entries.
Definition correlation.h:208
correlation()
Constructor.
Definition correlation.h:115
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
Definition correlation.h:93
Types for generic correlation.
Definition correlation.h:50
Definition correlation.h:80
Calculates the smallest value that, when squared, will be not greater than VALUE.
Definition sqrt.h:47