Kolmogorov.cc
Go to the documentation of this file.
1 #include <utl/Math.h>
2 #include <utl/Kolmogorov.h>
3 
4 using namespace std;
5 
6 
7 namespace utl {
8 
9  double
10  KolmogorovProbability(const double effectiveN, const double kolmogorovDistance)
11  {
12  const double sqrtN = sqrt(effectiveN);
13  const double x = (sqrtN + 0.12 + 0.11/sqrtN) * kolmogorovDistance;
14 
15  const double y = -2*Sqr(x);
16 
17  double sum = 0;
18  int sign = 1;
19  double prev = 0;
20  for (int i = 1; i < 50; ++i) {
21  const double z = exp(Sqr(i) * y);
22  sum += sign * z;
23  sign *= -1;
24  if (sum == prev)
25  return 2*sum;
26  prev = sum;
27  }
28 
29  return 2*sum;
30  }
31 
32 
33  double
34  KolmogorovProbability(const int n, const double kolmogorovDistance)
35  {
36  return KolmogorovProbability(double(n), kolmogorovDistance);
37  }
38 
39 
40  double
41  KolmogorovProbability(const int n1, const int n2, const double kolmogorovDistance)
42  {
43  return KolmogorovProbability(double(n1)*n2/(n1+n2), kolmogorovDistance);
44  }
45 
46 }
constexpr T Sqr(const T &x)
double KolmogorovProbability(const double effectiveN, const double kolmogorovDistance)
Definition: Kolmogorov.cc:10

, generated on Tue Sep 26 2023.