My Project
probability.h
Go to the documentation of this file.
1/* probability.h
2 */
3#ifndef _STAT_PROBABILITY_H
4#define _STAT_PROBABILITY_H
5
6#include <algorithm>
7#include <cmath>
8namespace osl
9{
10 namespace stat
11 {
13 {
14 unsigned long numerator, denominator;
15 explicit Probability(unsigned long n=0, unsigned long d=0)
16 : numerator(n), denominator(d)
17 {
18 }
19 double probability(double stabilizer=1.0) const
20 {
21 return std::max(stabilizer,numerator-stabilizer)
22 / std::max(stabilizer,static_cast<double>(denominator));
23 }
24 double logProb(unsigned int stabilizer=1u) const
25 {
26 const double prob = probability(stabilizer);
27 return log(prob)/log(0.5)*100;
28 }
29
30 void merge(const Probability& other)
31 {
32 numerator += other.numerator;
33 denominator += other.denominator;
34 }
35 };
36 } // namespace stat
37} // namespace osl
38
39#endif /* _STAT_PROBABILITY_H */
40// ;;; Local Variables:
41// ;;; mode:c++
42// ;;; c-basic-offset:2
43// ;;; End:
44
45
double probability(double stabilizer=1.0) const
Definition probability.h:19
double logProb(unsigned int stabilizer=1u) const
Definition probability.h:24
void merge(const Probability &other)
Definition probability.h:30
unsigned long numerator
Definition probability.h:14
Probability(unsigned long n=0, unsigned long d=0)
Definition probability.h:15
unsigned long denominator
Definition probability.h:14