From 8f3febd5dc47153deda1f4eafb2804b233f34a10 Mon Sep 17 00:00:00 2001 From: tlatorre Date: Wed, 21 Nov 2018 10:45:51 -0600 Subject: add tests for norm() and norm_cdf() --- src/test.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'src/test.c') diff --git a/src/test.c b/src/test.c index 0828203..dddf235 100644 --- a/src/test.c +++ b/src/test.c @@ -21,6 +21,7 @@ #include #include /* for gsl_strerror() */ #include +#include typedef int testFunction(char *err); @@ -1174,6 +1175,58 @@ int test_solid_angle_fast(char *err) return 0; } +int test_norm(char *err) +{ + /* Tests the norm() function. */ + size_t i; + double x, mean, sigma, value, expected; + + init_genrand(0); + + for (i = 0; i < 100; i++) { + x = genrand_real2(); + mean = genrand_real2(); + sigma = genrand_real2(); + + value = norm(x,mean,sigma); + + expected = gsl_ran_ugaussian_pdf((x-mean)/sigma)/sigma; + + if (!isclose(value, expected, 1e-9, 0)) { + sprintf(err, "norm = %.5f, but expected %.5f", value, expected); + return 1; + } + } + + return 0; +} + +int test_norm_cdf(char *err) +{ + /* Tests the norm_cdf() function. */ + size_t i; + double x, mean, sigma, value, expected; + + init_genrand(0); + + for (i = 0; i < 100; i++) { + x = genrand_real2(); + mean = genrand_real2(); + sigma = genrand_real2(); + + value = norm_cdf(x,mean,sigma); + + expected = gsl_cdf_gaussian_P(x-mean,sigma); + + if (!isclose(value, expected, 1e-9, 0)) { + sprintf(err, "norm_cdf = %.5f, but expected %.5f", value, expected); + return 1; + } + } + + return 0; +} + struct tests { testFunction *test; char *name; @@ -1208,6 +1261,8 @@ struct tests { {test_solid_angle2, "test_solid_angle2"}, {test_solid_angle_lookup, "test_solid_angle_lookup"}, {test_solid_angle_fast, "test_solid_angle_fast"}, + {test_norm, "test_norm"}, + {test_norm_cdf, "test_norm_cdf"}, }; int main(int argc, char **argv) -- cgit