diff options
Diffstat (limited to 'database/KolmogorovSmirnovDist.h')
-rw-r--r-- | database/KolmogorovSmirnovDist.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/database/KolmogorovSmirnovDist.h b/database/KolmogorovSmirnovDist.h new file mode 100644 index 000000000..cf455042a --- /dev/null +++ b/database/KolmogorovSmirnovDist.h @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-3.0 + +#ifndef KOLMOGOROVSMIRNOVDIST_H +#define KOLMOGOROVSMIRNOVDIST_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/******************************************************************** + * + * File: KolmogorovSmirnovDist.h + * Environment: ISO C99 or ANSI C89 + * Author: Richard Simard + * Organization: DIRO, Université de Montréal + * Date: 1 February 2012 + * Version 1.1 + * + * Copyright March 2010 by Université de Montréal, + Richard Simard and Pierre L'Ecuyer + ===================================================================== + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + =====================================================================*/ +/* + * + * The Kolmogorov-Smirnov test statistic D_n is defined by + * + * D_n = sup_x |F(x) - S_n(x)| + * + * where n is the sample size, F(x) is a completely specified theoretical + * distribution, and S_n(x) is an empirical distribution function. + * + * + * The function + * + * double KScdf (int n, double x); + * + * computes the cumulative probability P[D_n <= x] of the 2-sided 1-sample + * Kolmogorov-Smirnov distribution with sample size n at x. + * It returns at least 13 decimal digits of precision for n <= 500, + * at least 7 decimal digits of precision for 500 < n <= 100000, + * and a few correct decimal digits for n > 100000. + * + */ + +double KScdf (int n, double x); + + +/* + * The function + * + * double KSfbar (int n, double x); + * + * computes the complementary cumulative probability P[D_n >= x] of the + * 2-sided 1-sample Kolmogorov-Smirnov distribution with sample size n at x. + * It returns at least 10 decimal digits of precision for n <= 500, + * at least 6 decimal digits of precision for 500 < n <= 200000, + * and a few correct decimal digits for n > 200000. + * + */ + +double KSfbar (int n, double x); + + +/* + * NOTE: + * The ISO C99 function log1p of the standard math library does not exist in + * ANSI C89. Here, it is programmed explicitly in KolmogorovSmirnovDist.c. + + * For ANSI C89 compilers, change the preprocessor condition to make it + * available. + */ + +#ifdef __cplusplus +} +#endif + +#endif |