solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit a17d23562d7c3d7af70c9fdb63e4cb5b1a4b7371
parent 0167ffad7c5c26a242cc51461622f1042ec0d41a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu,  6 Oct 2016 15:36:26 +0200

Fix some tests on Linux

Use the standard error to check the estimated value.

Diffstat:
Msrc/test_ssol_solver1.c | 14++++++++------
Msrc/test_ssol_solver2b.c | 4++--
2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c @@ -64,6 +64,7 @@ main(int argc, char** argv) double mono = 1.21; double transform1[12]; /* 3x4 column major matrix */ double transform2[12]; /* 3x4 column major matrix */ + double dbl; FILE* tmp = NULL; double m, std; @@ -194,9 +195,10 @@ main(int argc, char** argv) CHECK(pp_sum(tmp, "cible", N, &m, &std), RES_OK); logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); #define DNI_cos (1000 * cos(PI / 4)) - CHECK(eq_eps(m, 4 * DNI_cos, 4 * DNI_cos * 1e-2), 1); + CHECK(eq_eps(m, 4 * DNI_cos, MMAX(4 * DNI_cos * 1e-2, std)), 1); #define SQR(x) ((x)*(x)) - CHECK(eq_eps(std, sqrt((SQR(12 * DNI_cos) / 3 - SQR(4 * DNI_cos)) / N), 1e-1), 1); + dbl = sqrt((SQR(12 * DNI_cos) / 3 - SQR(4 * DNI_cos)) / N); + CHECK(eq_eps(std, dbl, dbl*1e-2), 1); CHECK(fclose(tmp), 0); /* sample primary mirror only; variance is low */ @@ -210,7 +212,7 @@ main(int argc, char** argv) CHECK(ssol_solve(scene, rng, N, tmp), RES_OK); CHECK(pp_sum(tmp, "cible", N, &m, &std), RES_OK); logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); - CHECK(eq_eps(m, 4 * DNI_cos, 4 * DNI_cos * 1e-4), 1); + CHECK(eq_eps(m, 4 * DNI_cos, MMAX(4 * DNI_cos * 1e-2, std)), 1); CHECK(eq_eps(std, 0, 1e-4), 1); CHECK(fclose(tmp), 0); @@ -226,7 +228,7 @@ main(int argc, char** argv) CHECK(pp_sum(tmp, "cible", N, &m, &std), RES_OK); logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); CHECK(fclose(tmp), 0); - CHECK(eq_eps(m, 4 * DNI_cos, 4 * DNI_cos * 1e-4), 1); + CHECK(eq_eps(m, 4 * DNI_cos, MMAX(4 * DNI_cos * 1e-2, std)), 1); CHECK(eq_eps(std, 0, 1e-4), 1); CHECK(ssol_scene_detach_atmosphere(scene, atm), RES_OK); CHECK(ssol_spectrum_ref_put(abs), RES_OK); @@ -246,7 +248,7 @@ main(int argc, char** argv) logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); CHECK(fclose(tmp), 0); #define K (exp(-0.1 * 4 * sqrt(2))) - CHECK(eq_eps(m, 4 * K * DNI_cos, 4 * K * DNI_cos * 1e-4), 1); + CHECK(eq_eps(m, 4 * K * DNI_cos, MMAX(4 * K * DNI_cos * 1e-1, std)), 1); CHECK(eq_eps(std, 0, 1e-4), 1); /* check a monochromatic sun */ @@ -265,7 +267,7 @@ main(int argc, char** argv) logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); CHECK(fclose(tmp), 0); #define K2 (exp(-0.121 * 4 * sqrt(2))) - CHECK(eq_eps(m, 4 * K2 * DNI_cos, 4 * K2 * DNI_cos * 1e-4), 1); + CHECK(eq_eps(m, 4 * K2 * DNI_cos, MMAX(4 * K2 * DNI_cos * 1e-4, std)), 1); CHECK(eq_eps(std, 0, 1e-4), 1); /* free data */ diff --git a/src/test_ssol_solver2b.c b/src/test_ssol_solver2b.c @@ -181,12 +181,12 @@ main(int argc, char** argv) CHECK(ssol_solve(scene, rng, 20, stdout), RES_OK); tmp = tmpfile(); -#define N 10000 +#define N 50000 CHECK(ssol_solve(scene, rng, N, tmp), RES_OK); CHECK(pp_sum(tmp, "cible", N, &m, &std), RES_OK); logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std); #define DNI_cos (1000 * cos(PI / 4)) - CHECK(eq_eps(m, 2 * DNI_cos, 2 * DNI_cos * 2e-2), 1); + CHECK(eq_eps(m, 2 * DNI_cos, MMAX(2 * DNI_cos * 1e-2, std)), 1); #define SQR(x) ((x)*(x)) CHECK(eq_eps(std, sqrt((SQR(4 * DNI_cos) / 2 - SQR(2 * DNI_cos)) / N), 1e-3), 1); /* free data */