My Project
average.h
Go to the documentation of this file.
1/* average.h
2 */
3#ifndef _AVERAGE_H
4#define _AVERAGE_H
5
6namespace osl
7{
8 namespace stat
9 {
13 class Average
14 {
15 double mean;
17 public:
18 // CREATORS
20 {
21 }
22 // MANIPULATORS
27 double add(const double& x)
28 {
29 ++elements;
30 const double diff = x - mean;
31 mean += diff/elements;
32 return diff;
33 }
34 void merge(const Average& r)
35 {
36 if (r.elements == 0)
37 return;
38 const double sum = mean*elements + r.mean*r.elements;
39 elements += r.elements;
40 mean = sum / elements;
41 }
42 void clear(double a=0.0, int e=0)
43 {
44 mean = a;
45 elements = e;
46 }
47 // ACCESSORS
48 double average() const { return mean; }
49 int numElements() const { return elements; }
50 };
51 } // namespace stat
52 using stat::Average;
53} // namespace osl
54
55
56#endif /* _AVERAGE_H */
57// ;;; Local Variables:
58// ;;; mode:c++
59// ;;; c-basic-offset:2
60// ;;; End:
incrementaly maintain average of data sequence
Definition average.h:14
void clear(double a=0.0, int e=0)
Definition average.h:42
void merge(const Average &r)
Definition average.h:34
double add(const double &x)
Add an element x.
Definition average.h:27
double average() const
Definition average.h:48
int numElements() const
Definition average.h:49