4 #ifndef _cic_utl_Accumulator_h_
5 #define _cic_utl_Accumulator_h_
14 namespace Accumulator {
28 template<
typename T,
class Container = std::vector<T>>
29 class Collect :
public std::unary_function<T, void> {
49 class Min :
public std::unary_function<T, void> {
65 class Max :
public std::unary_function<T, void> {
85 MinMax(
const T firstMin,
const T firstMax) :
Min<T>(firstMin),
Max<T>(firstMax) { }
107 for (
unsigned int i = 0,
n =
fSumX.size(); i <
n; ++i) {
108 fSumX[i] += values[i];
109 for (
unsigned int j = 0; j <= i; ++j)
110 fSumXY[n*i + j] += values[i] * values[j];
118 std::vector<double>
m(
fSumX.size());
119 for (
unsigned int i = 0; i <
fSumX.size(); ++i)
128 const unsigned int n =
fSumX.size();
129 std::vector<double>
v(n);
130 for (
unsigned int i = 0; i <
n; ++i)
139 std::vector<double>
s = GetVars();
146 GetCovariance(
unsigned int i,
unsigned int j)
151 const unsigned int n =
fSumX.size();
155 std::vector<std::vector<double>>
159 const unsigned int n =
fSumX.size();
160 std::vector<std::vector<double>>
c(n, std::vector<double>(n));
161 for (
unsigned int i = 0; i <
n; ++i)
162 for (
unsigned int j = 0; j <
n; ++j)
163 c[i][j] = GetCovariance(i, j);
173 class Sum :
public std::unary_function<double, void> {
void operator()(const double x)
double GetSumOfSquares() const
void swap(utl::Trace< T > &t1, utl::Trace< T > &t2)
void operator()(const double x)
constexpr T Sqr(const T &x)
MinMax(const T firstMin, const T firstMax)
void operator()(const T &x)
Covariance(const unsigned int nVar)
void Clear(const T min, const T max)
void operator()(const T x)
void operator()(const double x)
double GetVar(const int n) const
void operator()(const std::vector< T > &values)
double GetSumOfSquares() const
void operator()(const double x)
Count(const unsigned int init=0)
void operator()(const double x)
Container & GetCollection()
void operator()(const T x)
void operator()(const double x)
std::pair< T, T > GetMinMax() const
unsigned int operator++()
unsigned int GetCount() const
const Container & GetCollection() const
double GetMean(const int n) const
void operator()(const T x)
double GetStd(const int n) const
void Clear(const unsigned init=0)