diff options
author | tlatorre <tlatorre@uchicago.edu> | 2018-11-21 10:45:51 -0600 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2018-11-21 10:45:51 -0600 |
commit | 8f3febd5dc47153deda1f4eafb2804b233f34a10 (patch) | |
tree | 1e0dc392820e8d4bed66f573f335dc35f2407a01 /src/test.c | |
parent | 47ca1a4f7e70c302c7c31d54c35ed3c2d3f757ef (diff) | |
download | sddm-8f3febd5dc47153deda1f4eafb2804b233f34a10.tar.gz sddm-8f3febd5dc47153deda1f4eafb2804b233f34a10.tar.bz2 sddm-8f3febd5dc47153deda1f4eafb2804b233f34a10.zip |
add tests for norm() and norm_cdf()
Diffstat (limited to 'src/test.c')
-rw-r--r-- | src/test.c | 55 |
1 files changed, 55 insertions, 0 deletions
@@ -21,6 +21,7 @@ #include <gsl/gsl_spline2d.h> #include <gsl/gsl_errno.h> /* for gsl_strerror() */ #include <gsl/gsl_randist.h> +#include <gsl/gsl_cdf.h> 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) |