]> AND Private Git Repository - loba.git/blob - statistics.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Spell sig_atomic_t as std::sig_atomic_t.
[loba.git] / statistics.h
1 #ifndef STATISTICS_H
2 #define STATISTICS_H
3
4 #include <cmath>
5 #include <vector>
6
7 class statistics {
8 public:
9     statistics()
10         : count(0)
11         , sum(0.0)
12         , mean(0.0)
13         , sqdiff_sum(0.0)
14     { }
15
16     void push(double x) {
17         double delta = x - mean;
18         ++count;
19         sum += x;
20         mean = sum / count;
21         sqdiff_sum += delta * (x - mean);
22     }
23
24     unsigned get_count() const  { return count;                }
25     double get_sum() const      { return sum;                  }
26     double get_mean() const     { return mean;                 }
27     double get_variance() const { return sqdiff_sum / count;   }
28     double get_stddev() const   { return sqrt(get_variance()); }
29
30 private:
31     int count;
32     double sum;                 // sum of x_i
33     double mean;                // mean of x_i
34     double sqdiff_sum;          // sum of (x_i - mean)^2
35 };
36
37 #endif // !STATISTICS_H
38
39 // Local variables:
40 // mode: c++
41 // End: