My Project
average.h
Go to the documentation of this file.
1 /* average.h
2  */
3 #ifndef _AVERAGE_H
4 #define _AVERAGE_H
5 
6 namespace osl
7 {
8  namespace stat
9  {
13  class Average
14  {
15  double mean;
16  int elements;
17  public:
18  // CREATORS
19  Average() : mean(0), elements(0)
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:
osl::stat::Average::mean
double mean
Definition: average.h:15
osl::stat::Average::clear
void clear(double a=0.0, int e=0)
Definition: average.h:42
osl::stat::Average::numElements
int numElements() const
Definition: average.h:49
osl::stat::Average::merge
void merge(const Average &r)
Definition: average.h:34
osl::stat::Average
incrementaly maintain average of data sequence
Definition: average.h:14
osl::stat::Average::elements
int elements
Definition: average.h:16
osl::stat::Average::Average
Average()
Definition: average.h:19
osl::stat::Average::add
double add(const double &x)
Add an element x.
Definition: average.h:27
osl::stat::Average::average
double average() const
Definition: average.h:48
osl
Definition: additionalEffect.h:6