// 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 . =====================================================================*/ /* * * 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