aboutsummaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2018-11-21 10:45:51 -0600
committertlatorre <tlatorre@uchicago.edu>2018-11-21 10:45:51 -0600
commit8f3febd5dc47153deda1f4eafb2804b233f34a10 (patch)
tree1e0dc392820e8d4bed66f573f335dc35f2407a01 /src/test.c
parent47ca1a4f7e70c302c7c31d54c35ed3c2d3f757ef (diff)
downloadsddm-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.c55
1 files changed, 55 insertions, 0 deletions
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 <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)