star-sp

Random number generators and distributions
git clone git://git.meso-star.fr/star-sp.git
Log | Files | Refs | README | LICENSE

commit b806651d3333530688a25b9061d9ebc514ae776d
parent a0dfb01a70a62eb9647bf06fcc6c1b3ab90d3b80
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 27 Nov 2017 15:37:57 +0100

Fix deprecations introduced by RSys 0.6

Diffstat:
Mcmake/CMakeLists.txt | 5+++--
Msrc/test_ssp_ran_discrete.c | 60++++++++++++++++++++++++++++++------------------------------
Msrc/test_ssp_ran_gaussian.h | 82++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_ssp_ran_hemisphere.h | 156++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_ssp_ran_hg.h | 8++++----
Msrc/test_ssp_ran_piecewise_linear.h | 137++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/test_ssp_ran_sphere.h | 14+++++++-------
Msrc/test_ssp_ran_triangle.h | 72++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/test_ssp_ran_uniform_disk.h | 64++++++++++++++++++++++++++++++++--------------------------------
Msrc/test_ssp_rng.c | 130++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_ssp_rng_proxy.c | 226++++++++++++++++++++++++++++++++++++++++----------------------------------------
11 files changed, 478 insertions(+), 476 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -45,7 +45,8 @@ set(Random123_DIR ${_current_source_dir}/) find_package(Random123 REQUIRED) find_package(RCMake 0.2.3 REQUIRED) -find_package(RSys 0.4 REQUIRED) +find_package(RSys 0.6 REQUIRED) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RCMAKE_SOURCE_DIR}) include(rcmake) include(rcmake_runtime) @@ -128,7 +129,7 @@ if(NOT NO_TEST) ${SSP_SOURCE_DIR}/${_name}.c ${SSP_SOURCE_DIR}/${_name}.h ${SSP_SOURCE_DIR}/test_ssp_utils.h) - set_source_files_properties(${SSP_SOURCE_DIR}/${_name}.c PROPERTIES LANGUAGE CXX) + target_link_libraries(${_name} ssp RSys ${MATH_LIB}) set(_libraries ${ARGN}) foreach(_lib ${_libraries}) diff --git a/src/test_ssp_ran_discrete.c b/src/test_ssp_ran_discrete.c @@ -50,61 +50,61 @@ main(int argc, char** argv) (void)argc, (void)argv; mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng) == RES_OK); - CHECK(ssp_ranst_discrete_create(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_create(NULL, &ran), RES_OK); + CHK(ssp_ranst_discrete_create(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_create(NULL, &ran) == RES_OK); - CHECK(ssp_ranst_discrete_ref_get(NULL), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_ref_get(ran), RES_OK); - CHECK(ssp_ranst_discrete_ref_put(NULL), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_ref_put(ran), RES_OK); - CHECK(ssp_ranst_discrete_ref_put(ran), RES_OK); + CHK(ssp_ranst_discrete_ref_get(NULL) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_ref_get(ran) == RES_OK); + CHK(ssp_ranst_discrete_ref_put(NULL) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_ref_put(ran) == RES_OK); + CHK(ssp_ranst_discrete_ref_put(ran) == RES_OK); - CHECK(ssp_ranst_discrete_create(&allocator, &ran), RES_OK); + CHK(ssp_ranst_discrete_create(&allocator, &ran) == RES_OK); - CHECK(ssp_ranst_discrete_setup(NULL, NULL, 0), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(ran, NULL, 0), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(NULL, weights, 0), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(ran, weights, 0), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(NULL, NULL, nweights), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(ran, NULL, nweights), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(NULL, weights, nweights), RES_BAD_ARG); - CHECK(ssp_ranst_discrete_setup(ran, weights, nweights), RES_OK); + CHK(ssp_ranst_discrete_setup(NULL, NULL, 0) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(ran, NULL, 0) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(NULL, weights, 0) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(ran, weights, 0) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(NULL, NULL, nweights) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(ran, NULL, nweights) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(NULL, weights, nweights) == RES_BAD_ARG); + CHK(ssp_ranst_discrete_setup(ran, weights, nweights) == RES_OK); memset(tmp, 0, sizeof(tmp)); FOR_EACH(i, 0, NSAMPS) { const size_t k = ssp_ranst_discrete_get(rng, ran); double pdf; - CHECK(k < nweights, 1); + CHK(k < nweights); pdf = ssp_ranst_discrete_pdf(k, ran); ++tmp[k]; - CHECK(pdf, weights[k]); - CHECK(pdf >= 0.f, 1); - CHECK(pdf <= 1.f, 1); + CHK(pdf == weights[k]); + CHK(pdf >= 0.f); + CHK(pdf <= 1.f); } FOR_EACH(i, 0, nweights) { - NCHECK(tmp[i], 0); + CHK(tmp[i] != 0); } - CHECK(ssp_ranst_discrete_setup(ran, weights, nweights-1), RES_OK); + CHK(ssp_ranst_discrete_setup(ran, weights, nweights-1) == RES_OK); FOR_EACH(i, 0, NSAMPS) { const size_t k = ssp_ranst_discrete_get(rng, ran); double pdf; - CHECK(k < nweights-1, 1); + CHK(k < nweights-1); pdf = ssp_ranst_discrete_pdf(k, ran); - CHECK(pdf >= 0.f, 1); - CHECK(pdf <= 1.f, 1); + CHK(pdf >= 0.f); + CHK(pdf <= 1.f); } accum = 0; FOR_EACH(i, 0, nweights-1) accum += ssp_ranst_discrete_pdf(i, ran); - CHECK(eq_eps(accum, 1, 1.e-8), 1); - CHECK(ssp_ranst_discrete_ref_put(ran), RES_OK); + CHK(eq_eps(accum, 1, 1.e-8) == 1); + CHK(ssp_ranst_discrete_ref_put(ran) == RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_ssp_ran_gaussian.h b/src/test_ssp_ran_gaussian.h @@ -43,31 +43,31 @@ #endif /* TEST_SSP_RAN_GAUSSIAN_H */ #if TYPE_FLOAT==0 -#define REAL double -#define TEST test_double -#define RAN_GAUSSIAN ssp_ran_gaussian -#define RANST_GAUSSIAN ssp_ranst_gaussian -#define RANST_GAUSSIAN_CREATE ssp_ranst_gaussian_create -#define RANST_GAUSSIAN_REF_GET ssp_ranst_gaussian_ref_get -#define RANST_GAUSSIAN_REF_PUT ssp_ranst_gaussian_ref_put -#define RANST_GAUSSIAN_SETUP ssp_ranst_gaussian_setup -#define RANST_GAUSSIAN_GET ssp_ranst_gaussian_get -#define SQRT sqrt + #define REAL double + #define TEST test_double + #define RAN_GAUSSIAN ssp_ran_gaussian + #define RANST_GAUSSIAN ssp_ranst_gaussian + #define RANST_GAUSSIAN_CREATE ssp_ranst_gaussian_create + #define RANST_GAUSSIAN_REF_GET ssp_ranst_gaussian_ref_get + #define RANST_GAUSSIAN_REF_PUT ssp_ranst_gaussian_ref_put + #define RANST_GAUSSIAN_SETUP ssp_ranst_gaussian_setup + #define RANST_GAUSSIAN_GET ssp_ranst_gaussian_get + #define SQRT sqrt #elif TYPE_FLOAT==1 -#define REAL float -#define TEST test_float -#define RAN_GAUSSIAN ssp_ran_gaussian_float -#define RANST_GAUSSIAN ssp_ranst_gaussian_float -#define RANST_GAUSSIAN_CREATE ssp_ranst_gaussian_float_create -#define RANST_GAUSSIAN_REF_GET ssp_ranst_gaussian_float_ref_get -#define RANST_GAUSSIAN_REF_PUT ssp_ranst_gaussian_float_ref_put -#define RANST_GAUSSIAN_SETUP ssp_ranst_gaussian_float_setup -#define RANST_GAUSSIAN_GET ssp_ranst_gaussian_float_get -#define SQRT sqrtf + #define REAL float + #define TEST test_float + #define RAN_GAUSSIAN ssp_ran_gaussian_float + #define RANST_GAUSSIAN ssp_ranst_gaussian_float + #define RANST_GAUSSIAN_CREATE ssp_ranst_gaussian_float_create + #define RANST_GAUSSIAN_REF_GET ssp_ranst_gaussian_float_ref_get + #define RANST_GAUSSIAN_REF_PUT ssp_ranst_gaussian_float_ref_put + #define RANST_GAUSSIAN_SETUP ssp_ranst_gaussian_float_setup + #define RANST_GAUSSIAN_GET ssp_ranst_gaussian_float_get + #define SQRT (float)sqrt #else -#error "TYPE_FLOAT must be defined either 0 or 1" + #error "TYPE_FLOAT must be defined either 0 or 1" #endif static void @@ -85,24 +85,24 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng) == RES_OK); - CHECK(RANST_GAUSSIAN_CREATE(NULL, NULL), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_CREATE(NULL, &gaussian), RES_OK); - CHECK(RANST_GAUSSIAN_REF_PUT(gaussian), RES_OK); + CHK(RANST_GAUSSIAN_CREATE(NULL, NULL) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_CREATE(NULL, &gaussian) == RES_OK); + CHK(RANST_GAUSSIAN_REF_PUT(gaussian) == RES_OK); - CHECK(RANST_GAUSSIAN_CREATE(&allocator, NULL), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_CREATE(&allocator, &gaussian), RES_OK); + CHK(RANST_GAUSSIAN_CREATE(&allocator, NULL) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_CREATE(&allocator, &gaussian) == RES_OK); - CHECK(RANST_GAUSSIAN_SETUP(NULL, exp_mean, exp_std), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_SETUP(gaussian, exp_mean, -1), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_SETUP(gaussian, exp_mean, exp_std), RES_OK); + CHK(RANST_GAUSSIAN_SETUP(NULL, exp_mean, exp_std) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_SETUP(gaussian, exp_mean, -1) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_SETUP(gaussian, exp_mean, exp_std) == RES_OK); - CHECK(RANST_GAUSSIAN_REF_GET(NULL), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_REF_GET(gaussian), RES_OK); + CHK(RANST_GAUSSIAN_REF_GET(NULL) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_REF_GET(gaussian) == RES_OK); - CHECK(RANST_GAUSSIAN_REF_PUT(NULL), RES_BAD_ARG); - CHECK(RANST_GAUSSIAN_REF_PUT(gaussian), RES_OK); + CHK(RANST_GAUSSIAN_REF_PUT(NULL) == RES_BAD_ARG); + CHK(RANST_GAUSSIAN_REF_PUT(gaussian) == RES_OK); time_current(&start); FOR_EACH(i, 0, NBS) { @@ -118,8 +118,8 @@ TEST() mean = x / NBS; std = SQRT(x2 / NBS - mean*mean); printf("%g %g\n", mean, std); - CHECK(eq_eps(mean, exp_mean, 1e-2), 1); - CHECK(eq_eps(std, exp_std, 1e-2), 1); + CHK(eq_eps(mean, exp_mean, 1e-2) == 1); + CHK(eq_eps(std, exp_std, 1e-2) == 1); /* Same test with inline gaussian generation */ x = 0; @@ -139,16 +139,16 @@ TEST() mean = x / NBS; std = SQRT(x2 / NBS - mean*mean); printf("%g %g\n", mean, std); - CHECK(eq_eps(mean, exp_mean, 1.e-2), 1); - CHECK(eq_eps(std, exp_std, 1e-2), 1); + CHK(eq_eps(mean, exp_mean, 1.e-2) == 1); + CHK(eq_eps(std, exp_std, 1e-2) == 1); - CHECK(RANST_GAUSSIAN_REF_PUT(gaussian), RES_OK); + CHK(RANST_GAUSSIAN_REF_PUT(gaussian) == RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef TEST diff --git a/src/test_ssp_ran_hemisphere.h b/src/test_ssp_ran_hemisphere.h @@ -40,51 +40,51 @@ #endif /* TEST_SSP_RAN_HEMISPHERE_H */ #if TYPE_FLOAT==0 -#define REAL double -#define TEST test_double -#define RNG_UNIFORM_R ssp_rng_uniform_double -#define RAN_HEMISPHERE_UNIFORM_LOCAL ssp_ran_hemisphere_uniform_local -#define RAN_HEMISPHERE_UNIFORM_LOCAL_PDF ssp_ran_hemisphere_uniform_local_pdf -#define RAN_HEMISPHERE_COS_LOCAL ssp_ran_hemisphere_cos_local -#define RAN_HEMISPHERE_COS_LOCAL_PDF ssp_ran_hemisphere_cos_local_pdf -#define RAN_HEMISPHERE_UNIFORM ssp_ran_hemisphere_uniform -#define RAN_HEMISPHERE_COS ssp_ran_hemisphere_cos -#define RAN_HEMISPHERE_COS_PDF ssp_ran_hemisphere_cos_pdf -#define RAN_HEMISPHERE_UNIFORM_PDF ssp_ran_hemisphere_uniform_pdf -#define R3_NORMALIZE d3_normalize -#define R3_IS_NORMALIZED d3_is_normalized -#define R3_DOT d3_dot -#define R4_EQ_EPS d4_eq_eps -#define R4_EQ d4_eq -#define R3_EQ_EPS d3_eq_eps -#define EQ_EPS_R eq_eps -#define R33_BASIS d33_basis -#define R33_MULR3 d33_muld3 + #define REAL double + #define TEST test_double + #define RNG_UNIFORM_R ssp_rng_uniform_double + #define RAN_HEMISPHERE_UNIFORM_LOCAL ssp_ran_hemisphere_uniform_local + #define RAN_HEMISPHERE_UNIFORM_LOCAL_PDF ssp_ran_hemisphere_uniform_local_pdf + #define RAN_HEMISPHERE_COS_LOCAL ssp_ran_hemisphere_cos_local + #define RAN_HEMISPHERE_COS_LOCAL_PDF ssp_ran_hemisphere_cos_local_pdf + #define RAN_HEMISPHERE_UNIFORM ssp_ran_hemisphere_uniform + #define RAN_HEMISPHERE_COS ssp_ran_hemisphere_cos + #define RAN_HEMISPHERE_COS_PDF ssp_ran_hemisphere_cos_pdf + #define RAN_HEMISPHERE_UNIFORM_PDF ssp_ran_hemisphere_uniform_pdf + #define R3_NORMALIZE d3_normalize + #define R3_IS_NORMALIZED d3_is_normalized + #define R3_DOT d3_dot + #define R4_EQ_EPS d4_eq_eps + #define R4_EQ d4_eq + #define R3_EQ_EPS d3_eq_eps + #define EQ_EPS_R eq_eps + #define R33_BASIS d33_basis + #define R33_MULR3 d33_muld3 #elif TYPE_FLOAT==1 -#define REAL float -#define TEST test_float -#define RNG_UNIFORM_R ssp_rng_uniform_float -#define RAN_HEMISPHERE_UNIFORM_LOCAL ssp_ran_hemisphere_uniform_float_local -#define RAN_HEMISPHERE_UNIFORM_LOCAL_PDF ssp_ran_hemisphere_uniform_float_local_pdf -#define RAN_HEMISPHERE_COS_LOCAL ssp_ran_hemisphere_cos_float_local -#define RAN_HEMISPHERE_COS_LOCAL_PDF ssp_ran_hemisphere_cos_float_local_pdf -#define RAN_HEMISPHERE_UNIFORM ssp_ran_hemisphere_uniform_float -#define RAN_HEMISPHERE_COS ssp_ran_hemisphere_cos_float -#define RAN_HEMISPHERE_COS_PDF ssp_ran_hemisphere_cos_float_pdf -#define RAN_HEMISPHERE_UNIFORM_PDF ssp_ran_hemisphere_uniform_float_pdf -#define R3_NORMALIZE f3_normalize -#define R3_IS_NORMALIZED f3_is_normalized -#define R3_DOT f3_dot -#define R4_EQ_EPS f4_eq_eps -#define R4_EQ f4_eq -#define R3_EQ_EPS f3_eq_eps -#define EQ_EPS_R eq_eps -#define R33_BASIS f33_basis -#define R33_MULR3 f33_mulf3 + #define REAL float + #define TEST test_float + #define RNG_UNIFORM_R ssp_rng_uniform_float + #define RAN_HEMISPHERE_UNIFORM_LOCAL ssp_ran_hemisphere_uniform_float_local + #define RAN_HEMISPHERE_UNIFORM_LOCAL_PDF ssp_ran_hemisphere_uniform_float_local_pdf + #define RAN_HEMISPHERE_COS_LOCAL ssp_ran_hemisphere_cos_float_local + #define RAN_HEMISPHERE_COS_LOCAL_PDF ssp_ran_hemisphere_cos_float_local_pdf + #define RAN_HEMISPHERE_UNIFORM ssp_ran_hemisphere_uniform_float + #define RAN_HEMISPHERE_COS ssp_ran_hemisphere_cos_float + #define RAN_HEMISPHERE_COS_PDF ssp_ran_hemisphere_cos_float_pdf + #define RAN_HEMISPHERE_UNIFORM_PDF ssp_ran_hemisphere_uniform_float_pdf + #define R3_NORMALIZE f3_normalize + #define R3_IS_NORMALIZED f3_is_normalized + #define R3_DOT f3_dot + #define R4_EQ_EPS f4_eq_eps + #define R4_EQ f4_eq + #define R3_EQ_EPS f3_eq_eps + #define EQ_EPS_R eq_eps + #define R33_BASIS f33_basis + #define R33_MULR3 f33_mulf3 #else -#error "TYPE_FLOAT must be defined either 0 or 1" + #error "TYPE_FLOAT must be defined either 0 or 1" #endif static void @@ -101,8 +101,8 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng0), RES_OK); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng1), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng0) == RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng1) == RES_OK); samps0[0][0] = 0; samps0[0][1] = 0; samps0[0][2] = 1; f = RAN_HEMISPHERE_UNIFORM(rng1, samps0[0], samps1[0], NULL); @@ -117,16 +117,16 @@ TEST() ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_UNIFORM_LOCAL(rng1, samps0[i], &samps0[i][3]); - CHECK(f, samps0[i]); - CHECK(R3_IS_NORMALIZED(f), 1); - CHECK(EQ_EPS_R(f[3], (1/(2*(REAL)PI)), (REAL)1.e-6), 1); - CHECK(EQ_EPS_R(f[3], RAN_HEMISPHERE_UNIFORM_LOCAL_PDF(f), (REAL)1.e-6), 1); - CHECK(R3_DOT(f, up) >= 0, 1); + CHK(f == samps0[i]); + CHK(R3_IS_NORMALIZED(f)); + CHK(EQ_EPS_R(f[3], (1/(2*(REAL)PI)), (REAL)1.e-6) == 1); + CHK(EQ_EPS_R(f[3], RAN_HEMISPHERE_UNIFORM_LOCAL_PDF(f), (REAL)1.e-6) == 1); + CHK(R3_DOT(f, up) >= 0); ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_UNIFORM(rng1, up, samps1[i], &samps1[i][3]); - CHECK(f, samps1[i]); - CHECK(R4_EQ_EPS(f, samps0[i], (REAL)1.e-6), 1); + CHK(f == samps1[i]); + CHK(R4_EQ_EPS(f, samps0[i], (REAL)1.e-6) == 1); up[0] = RNG_UNIFORM_R(rng1, -1, 1); up[1] = RNG_UNIFORM_R(rng1, -1, 1); @@ -135,18 +135,18 @@ TEST() ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_UNIFORM(rng1, up, samps1[i], &samps1[i][3]); - CHECK(R3_EQ_EPS(samps0[i], samps1[i], (REAL)1.e-6), 0); - CHECK(R3_IS_NORMALIZED(f), 1); - CHECK(R3_DOT(f, up) >= 0, 1); - CHECK(EQ_EPS_R(f[3], 1/(2*(REAL)PI), (REAL)1.e-6 ), 1); - CHECK(EQ_EPS_R(f[3], RAN_HEMISPHERE_UNIFORM_PDF(up, f), (REAL)1.e-6), 1); + CHK(R3_EQ_EPS(samps0[i], samps1[i], (REAL)1.e-6) == 0); + CHK(R3_IS_NORMALIZED(f)); + CHK(R3_DOT(f, up) >= 0); + CHK(EQ_EPS_R(f[3], 1/(2*(REAL)PI), (REAL)1.e-6 )); + CHK(EQ_EPS_R(f[3], RAN_HEMISPHERE_UNIFORM_PDF(up, f), (REAL)1.e-6)); R33_BASIS(frame, up); R33_MULR3(xyz, frame, samps0[i]); - CHECK(R3_EQ_EPS(samps1[i], xyz, (REAL)1.e-6), 1); + CHK(R3_EQ_EPS(samps1[i], xyz, (REAL)1.e-6) == 1); FOR_EACH(j, 0, i) { - CHECK(R3_EQ_EPS(samps0[i], samps0[j], (REAL)1.e-6), 0); - CHECK(R3_EQ_EPS(samps1[i], samps1[j], (REAL)1.e-6), 0); + CHK(R3_EQ_EPS(samps0[i], samps0[j], (REAL)1.e-6) == 0); + CHK(R3_EQ_EPS(samps1[i], samps1[j], (REAL)1.e-6) == 0); } } @@ -159,7 +159,7 @@ TEST() RAN_HEMISPHERE_UNIFORM(rng0, samps1[1], samps0[0], &samps0[0][3]); ssp_rng_set(rng0, 0); RAN_HEMISPHERE_UNIFORM(rng0, samps1[1], samps1[1], &samps1[1][3]); - CHECK(R4_EQ(samps0[0], samps1[1]), 1); + CHK(R4_EQ(samps0[0], samps1[1]) == 1); ssp_rng_set(rng0, 0); FOR_EACH(i, 0, NSAMPS) { @@ -170,17 +170,17 @@ TEST() ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_COS_LOCAL(rng1, samps2[i], &samps2[i][3]); - CHECK(f, samps2[i]); - CHECK(R3_EQ_EPS(samps0[i], samps2[i], (REAL)1.e-6), 0); - CHECK(R3_IS_NORMALIZED(f), 1); - CHECK(EQ_EPS_R(f[3], f[2]/(REAL)PI, (REAL)1.e-6), 1); - CHECK(EQ_EPS_R(f[3], RAN_HEMISPHERE_COS_LOCAL_PDF(f), (REAL)1.e-6), 1); - CHECK(R3_DOT(f, up) >= 0, 1); + CHK(f == samps2[i]); + CHK(R3_EQ_EPS(samps0[i], samps2[i], (REAL)1.e-6) == 0); + CHK(R3_IS_NORMALIZED(f) == 1); + CHK(EQ_EPS_R(f[3], f[2]/(REAL)PI, (REAL)1.e-6) == 1); + CHK(EQ_EPS_R(f[3], RAN_HEMISPHERE_COS_LOCAL_PDF(f), (REAL)1.e-6) == 1); + CHK(R3_DOT(f, up) >= 0); ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_COS(rng1, up, samps3[i], &samps3[i][3]); - CHECK(f, samps3[i]); - CHECK(R4_EQ_EPS(f, samps2[i], (REAL)1.e-6), 1); + CHK(f == samps3[i]); + CHK(R4_EQ_EPS(f, samps2[i], (REAL)1.e-6) == 1); up[0] = RNG_UNIFORM_R(rng1, -1, 1); up[1] = RNG_UNIFORM_R(rng1, -1, 1); @@ -189,19 +189,19 @@ TEST() ssp_rng_set(rng1, seed); f = RAN_HEMISPHERE_COS(rng1, up, samps3[i], &samps3[i][3]); - CHECK(R3_EQ_EPS(samps2[i], samps3[i], (REAL)1.e-6), 0); - CHECK(R3_EQ_EPS(samps1[i], samps3[i], (REAL)1.e-6), 0); - CHECK(R3_IS_NORMALIZED(f), 1); - CHECK(R3_DOT(f, up) >= 0.f, 1); - CHECK(EQ_EPS_R(f[3], R3_DOT(f, up)/PI, (REAL)1.e-6), 1); - CHECK(EQ_EPS_R(f[3], RAN_HEMISPHERE_COS_PDF(f, up), (REAL)1.e-6), 1); + CHK(R3_EQ_EPS(samps2[i], samps3[i], (REAL)1.e-6) == 0); + CHK(R3_EQ_EPS(samps1[i], samps3[i], (REAL)1.e-6) == 0); + CHK(R3_IS_NORMALIZED(f) == 1); + CHK(R3_DOT(f, up) >= 0.f); + CHK(EQ_EPS_R(f[3], R3_DOT(f, up)/PI, (REAL)1.e-6) == 1); + CHK(EQ_EPS_R(f[3], RAN_HEMISPHERE_COS_PDF(f, up), (REAL)1.e-6) == 1); R33_BASIS(frame, up); R33_MULR3(xyz, frame, samps2[i]); - CHECK(R3_EQ_EPS(samps3[i], xyz, (REAL)1.e-6), 1); + CHK(R3_EQ_EPS(samps3[i], xyz, (REAL)1.e-6) == 1); FOR_EACH(j, 0, i) { - CHECK(R3_EQ_EPS(samps2[i], samps2[j], (REAL)1.e-6), 0); - CHECK(R3_EQ_EPS(samps3[i], samps3[j], (REAL)1.e-6), 0); + CHK(R3_EQ_EPS(samps2[i], samps2[j], (REAL)1.e-6) == 0); + CHK(R3_EQ_EPS(samps3[i], samps3[j], (REAL)1.e-6) == 0); } } @@ -214,14 +214,14 @@ TEST() RAN_HEMISPHERE_COS(rng0, samps1[1], samps0[0], &samps0[0][3]); ssp_rng_set(rng0, 0); RAN_HEMISPHERE_COS(rng0, samps1[1], samps1[1], &samps1[1][3]); - CHECK(R4_EQ(samps0[0], samps1[1]), 1); + CHK(R4_EQ(samps0[0], samps1[1]) == 1); ssp_rng_ref_put(rng0); ssp_rng_ref_put(rng1); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef REAL diff --git a/src/test_ssp_ran_hg.h b/src/test_ssp_ran_hg.h @@ -69,7 +69,7 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng) == RES_OK); FOR_EACH(i, 0, NG) { /* for any value of g... */ @@ -89,15 +89,15 @@ TEST() sum_cos += R3_DOT(up, dir); } /* ...on average cos(up, dir) should be g */ - CHECK(EQ_EPS_R(sum_cos_local / NSAMPS, g, (REAL)2.5e-2), 1); - CHECK(EQ_EPS_R(sum_cos / NSAMPS, g, (REAL)2.5e-2), 1); + CHK(EQ_EPS_R(sum_cos_local / NSAMPS, g, (REAL)2.5e-2) == 1); + CHK(EQ_EPS_R(sum_cos / NSAMPS, g, (REAL)2.5e-2) == 1); } ssp_rng_ref_put(rng); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef REAL diff --git a/src/test_ssp_ran_piecewise_linear.h b/src/test_ssp_ran_piecewise_linear.h @@ -39,34 +39,34 @@ #endif /* TEST_SSP_RAN_PIECEWISE_LINEAR_H */ #if TYPE_FLOAT==0 -#define REAL double -#define TEST test_double -#define RANST_PIECEWISE_LINEAR ssp_ranst_piecewise_linear -#define RANST_PIECEWISE_LINEAR_CREATE ssp_ranst_piecewise_linear_create -#define RANST_PIECEWISE_LINEAR_SETUP ssp_ranst_piecewise_linear_setup -#define RANST_PIECEWISE_LINEAR_GET ssp_ranst_piecewise_linear_get -#define RANST_PIECEWISE_LINEAR_PDF ssp_ranst_piecewise_linear_pdf -#define RANST_PIECEWISE_LINEAR_REF_GET ssp_ranst_piecewise_linear_ref_get -#define RANST_PIECEWISE_LINEAR_REF_PUT ssp_ranst_piecewise_linear_ref_put -#define EQ_EPS_R eq_eps -#define EPS_R DBL_EPSILON -#define SQRT sqrt + #define REAL double + #define TEST test_double + #define RANST_PIECEWISE_LINEAR ssp_ranst_piecewise_linear + #define RANST_PIECEWISE_LINEAR_CREATE ssp_ranst_piecewise_linear_create + #define RANST_PIECEWISE_LINEAR_SETUP ssp_ranst_piecewise_linear_setup + #define RANST_PIECEWISE_LINEAR_GET ssp_ranst_piecewise_linear_get + #define RANST_PIECEWISE_LINEAR_PDF ssp_ranst_piecewise_linear_pdf + #define RANST_PIECEWISE_LINEAR_REF_GET ssp_ranst_piecewise_linear_ref_get + #define RANST_PIECEWISE_LINEAR_REF_PUT ssp_ranst_piecewise_linear_ref_put + #define EQ_EPS_R eq_eps + #define EPS_R DBL_EPSILON + #define SQRT sqrt #elif TYPE_FLOAT==1 -#define REAL float -#define TEST test_float -#define RANST_PIECEWISE_LINEAR ssp_ranst_piecewise_linear_float -#define RANST_PIECEWISE_LINEAR_CREATE ssp_ranst_piecewise_linear_float_create -#define RANST_PIECEWISE_LINEAR_SETUP ssp_ranst_piecewise_linear_float_setup -#define RANST_PIECEWISE_LINEAR_GET ssp_ranst_piecewise_linear_float_get -#define RANST_PIECEWISE_LINEAR_PDF ssp_ranst_piecewise_linear_float_pdf -#define RANST_PIECEWISE_LINEAR_REF_GET ssp_ranst_piecewise_linear_float_ref_get -#define RANST_PIECEWISE_LINEAR_REF_PUT ssp_ranst_piecewise_linear_float_ref_put -#define EQ_EPS_R eq_epsf -#define EPS_R FLT_EPSILON -#define SQRT sqrtf + #define REAL float + #define TEST test_float + #define RANST_PIECEWISE_LINEAR ssp_ranst_piecewise_linear_float + #define RANST_PIECEWISE_LINEAR_CREATE ssp_ranst_piecewise_linear_float_create + #define RANST_PIECEWISE_LINEAR_SETUP ssp_ranst_piecewise_linear_float_setup + #define RANST_PIECEWISE_LINEAR_GET ssp_ranst_piecewise_linear_float_get + #define RANST_PIECEWISE_LINEAR_PDF ssp_ranst_piecewise_linear_float_pdf + #define RANST_PIECEWISE_LINEAR_REF_GET ssp_ranst_piecewise_linear_float_ref_get + #define RANST_PIECEWISE_LINEAR_REF_PUT ssp_ranst_piecewise_linear_float_ref_put + #define EQ_EPS_R eq_epsf + #define EPS_R FLT_EPSILON + #define SQRT (float)sqrt #else -#error "TYPE_FLOAT must be defined either 0 or 1" + #error "TYPE_FLOAT must be defined either 0 or 1" #endif static void @@ -84,79 +84,80 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_CREATE(NULL, NULL), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_CREATE(NULL, &pwl), RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_CREATE(NULL, NULL) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_CREATE(NULL, &pwl) == RES_OK); + CHK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, NULL), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, &pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, NULL) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, &pwl) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (NULL, intervals, weights, sizeof(intervals)/sizeof(REAL)), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, NULL, weights, sizeof(intervals)/sizeof(REAL)), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, NULL, sizeof(intervals)/sizeof(REAL)), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, 1), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, sizeof(intervals)/sizeof(REAL)), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (NULL, intervals, weights, sizeof(intervals)/sizeof(REAL)) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, NULL, weights, sizeof(intervals)/sizeof(REAL)) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, NULL, sizeof(intervals)/sizeof(REAL)) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, 1) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, sizeof(intervals)/sizeof(REAL)) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl), RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, &pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl) == RES_OK); + CHK(RANST_PIECEWISE_LINEAR_CREATE(&allocator, &pwl) == RES_OK); weights[1] = -1; - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)), RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)) == RES_BAD_ARG); weights[1] = 1; intervals[1] = 4; - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)), RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)) == RES_BAD_ARG); intervals[1] = 1; intervals[1] = 3; - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)), RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)) == RES_BAD_ARG); intervals[1] = 1; - CHECK(RANST_PIECEWISE_LINEAR_SETUP - (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_SETUP + (pwl, intervals, weights, sizeof(intervals) / sizeof(REAL)) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_REF_GET(NULL), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_REF_GET(pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_REF_GET(NULL) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_REF_GET(pwl) == RES_OK); - CHECK(RANST_PIECEWISE_LINEAR_REF_PUT(NULL), RES_BAD_ARG); - CHECK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_REF_PUT(NULL) == RES_BAD_ARG); + CHK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl) == RES_OK); FOR_EACH(i, 0, NBS) { - REAL r = RANST_PIECEWISE_LINEAR_GET(pwl, rng); - CHECK(0 <= r && r <= 10, 1); - REAL pdf = RANST_PIECEWISE_LINEAR_PDF(pwl, r); - CHECK(EQ_EPS_R(pdf, (REAL)0.1, EPS_R), 1); + REAL pdf, r; + r = RANST_PIECEWISE_LINEAR_GET(pwl, rng); + CHK(0 <= r && r <= 10); + pdf = RANST_PIECEWISE_LINEAR_PDF(pwl, r); + CHK(EQ_EPS_R(pdf, (REAL)0.1, EPS_R) == 1); x += r; x2 += r * r; } - CHECK(EQ_EPS_R(RANST_PIECEWISE_LINEAR_PDF(pwl, 0), (REAL)0.1, EPS_R), 1); - CHECK(EQ_EPS_R(RANST_PIECEWISE_LINEAR_PDF(pwl, 10), (REAL)0.1, EPS_R), 1); - CHECK(RANST_PIECEWISE_LINEAR_PDF(pwl, -1), 0); - CHECK(RANST_PIECEWISE_LINEAR_PDF(pwl, 11), 0); + CHK(EQ_EPS_R(RANST_PIECEWISE_LINEAR_PDF(pwl, 0), (REAL)0.1, EPS_R) == 1); + CHK(EQ_EPS_R(RANST_PIECEWISE_LINEAR_PDF(pwl, 10), (REAL)0.1, EPS_R) == 1); + CHK(RANST_PIECEWISE_LINEAR_PDF(pwl, -1) == 0); + CHK(RANST_PIECEWISE_LINEAR_PDF(pwl, 11) == 0); mean = x/NBS; std = SQRT(x2/NBS - mean*mean); printf("%g %g\n", mean, std); - CHECK(EQ_EPS_R(mean, exp_mean, (REAL)1e-2), 1); - CHECK(EQ_EPS_R(std, exp_std, (REAL)1.e-2), 1); + CHK(EQ_EPS_R(mean, exp_mean, (REAL)1e-2) == 1); + CHK(EQ_EPS_R(std, exp_std, (REAL)1.e-2) == 1); - CHECK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl), RES_OK); + CHK(RANST_PIECEWISE_LINEAR_REF_PUT(pwl) == RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef REAL diff --git a/src/test_ssp_ran_sphere.h b/src/test_ssp_ran_sphere.h @@ -69,16 +69,16 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng) == RES_OK); FOR_EACH(i, 0, NSAMPS) { f = RAN_SPHERE_UNIFORM(rng, samps[i], &samps[i][3]); - CHECK(f, samps[i]); - CHECK(R3_IS_NORMALIZED(f), 1); - CHECK(EQ_EPS(samps[i][3], 1/(4*(REAL)PI), (REAL)1.e-6), 1); - CHECK(EQ_EPS(samps[i][3], RAN_SPHERE_UNIFORM_PDF(), (REAL)1.e-6), 1); + CHK(f == samps[i]); + CHK(R3_IS_NORMALIZED(f) == 1); + CHK(EQ_EPS(samps[i][3], 1/(4*(REAL)PI), (REAL)1.e-6) == 1); + CHK(EQ_EPS(samps[i][3], RAN_SPHERE_UNIFORM_PDF(), (REAL)1.e-6) == 1); FOR_EACH(j, 0, i) { - CHECK(R3_EQ_EPS(samps[j], samps[i], (REAL)1.e-6), 0); + CHK(R3_EQ_EPS(samps[j], samps[i], (REAL)1.e-6) == 0); } } @@ -86,7 +86,7 @@ TEST() check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef REAL diff --git a/src/test_ssp_ran_triangle.h b/src/test_ssp_ran_triangle.h @@ -39,34 +39,35 @@ #endif /* TEST_SSP_RAN_TRIANGLE_H */ #if TYPE_FLOAT==0 -#define REAL double -#define TEST test_double -#define RNG_UNIFORM_R ssp_rng_uniform_double -#define RAN_TRIANGLE_UNIFORM ssp_ran_triangle_uniform -#define RAN_TRIANGLE_UNIFORM_PDF ssp_ran_triangle_uniform_pdf -#define EQ_EPS_R eq_eps -#define R3 d3 -#define R3_DOT d3_dot -#define R3_SUB d3_sub -#define R3_MINUS d3_minus -#define R3_CROSS d3_cross -#define R3_LEN d3_len + #define REAL double + #define TEST test_double + #define RNG_UNIFORM_R ssp_rng_uniform_double + #define RAN_TRIANGLE_UNIFORM ssp_ran_triangle_uniform + #define RAN_TRIANGLE_UNIFORM_PDF ssp_ran_triangle_uniform_pdf + #define EQ_EPS_R eq_eps + #define R3 d3 + #define R3_DOT d3_dot + #define R3_SUB d3_sub + #define R3_MINUS d3_minus + #define R3_CROSS d3_cross + #define R3_LEN d3_len #elif TYPE_FLOAT==1 -#define REAL float -#define TEST test_float -#define RNG_UNIFORM_R ssp_rng_uniform_float -#define RAN_TRIANGLE_UNIFORM ssp_ran_triangle_uniform_float -#define RAN_TRIANGLE_UNIFORM_PDF ssp_ran_triangle_uniform_float_pdf -#define EQ_EPS_R eq_epsf -#define R3 f3 -#define R3_DOT f3_dot -#define R3_SUB f3_sub -#define R3_MINUS f3_minus -#define R3_CROSS f3_cross -#define R3_LEN f3_len + #define REAL float + #define TEST test_float + #define RNG_UNIFORM_R ssp_rng_uniform_float + #define RAN_TRIANGLE_UNIFORM ssp_ran_triangle_uniform_float + #define RAN_TRIANGLE_UNIFORM_PDF ssp_ran_triangle_uniform_float_pdf + #define EQ_EPS_R eq_epsf + #define R3 f3 + #define R3_DOT f3_dot + #define R3_SUB f3_sub + #define R3_MINUS f3_minus + #define R3_CROSS f3_cross + #define R3_LEN f3_len + #else -#error "TYPE_FLOAT must be defined either 0 or 1" + #error "TYPE_FLOAT must be defined either 0 or 1" #endif static void @@ -85,7 +86,7 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_mt19937_64, &rng) == RES_OK); FOR_EACH(i, 0, 3) { A[i] = RNG_UNIFORM_R(rng, 0, 1); @@ -107,21 +108,21 @@ TEST() REAL dot = 0; REAL area = 0; - CHECK(RAN_TRIANGLE_UNIFORM(rng, A, B, C, samps[i], &pdf), samps[i]); - CHECK(EQ_EPS_R(R3_DOT(plane, samps[i]), -plane[3], (REAL)1.e-6), 1); + CHK(RAN_TRIANGLE_UNIFORM(rng, A, B, C, samps[i], &pdf) == samps[i]); + CHK(EQ_EPS_R(R3_DOT(plane, samps[i]), -plane[3], (REAL)1.e-6) == 1); R3_SUB(tmp0, samps[i], A); dot = R3_DOT(R3_CROSS(tmp0, tmp0, v0), R3_CROSS(tmp1, v1, v0)); - CHECK(sign(dot), 1); + CHK(sign(dot) == 1); R3_SUB(tmp0, samps[i], B); dot = R3_DOT(R3_CROSS(tmp0, tmp0, v2), R3_CROSS(tmp1, v3, v2)); - CHECK(sign(dot), 1); + CHK(sign(dot) == 1); R3_SUB(tmp0, samps[i], C); dot = R3_DOT(R3_CROSS(tmp0, tmp0, v4), R3_CROSS(tmp1, v5, v4)); - CHECK(sign(dot), 1); + CHK(sign(dot) == 1); area = R3_LEN(tmp1) * 0.5f; - CHECK(EQ_EPS_R(1 / area, RAN_TRIANGLE_UNIFORM_PDF(A, B, C), (REAL)1.e-6), 1); + CHK(EQ_EPS_R(1 / area, RAN_TRIANGLE_UNIFORM_PDF(A, B, C), (REAL)1.e-6) == 1); } nsteps = 10000; @@ -136,7 +137,7 @@ TEST() else counter[1] += 1; } - CHECK(labs((long)(counter[1] - counter[0])) < 100, 1); + CHK(labs((long)(counter[1] - counter[0])) < 100); counter[0] = counter[1] = 0; FOR_EACH(i, 0, nsteps) { @@ -146,15 +147,14 @@ TEST() else counter[1] += 1; } - CHECK(labs((long)(counter[1] - counter[0])) < 100, 1); + CHK(labs((long)(counter[1] - counter[0])) < 100); ssp_rng_ref_put(rng); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } - #undef REAL #undef TEST #undef RNG_UNIFORM_R diff --git a/src/test_ssp_ran_uniform_disk.h b/src/test_ssp_ran_uniform_disk.h @@ -42,30 +42,30 @@ #endif /* TEST_SSP_RAN_UNIFORM_DISK_H */ #if TYPE_FLOAT==0 -#define REAL double -#define TEST test_double -#define RNG_UNIFORM_R ssp_rng_uniform_double -#define RNG_UNIFORM_DISK_LOCAL ssp_ran_uniform_disk_local -#define RNG_UNIFORM_DISK ssp_ran_uniform_disk -#define R33_BASIS d33_basis -#define R33_MULR3 d33_muld3 -#define R3_EQ_EPS d3_eq_eps -#define R3_NORMALIZE d3_normalize -#define SQRT sqrt + #define REAL double + #define TEST test_double + #define RNG_UNIFORM_R ssp_rng_uniform_double + #define RNG_UNIFORM_DISK_LOCAL ssp_ran_uniform_disk_local + #define RNG_UNIFORM_DISK ssp_ran_uniform_disk + #define R33_BASIS d33_basis + #define R33_MULR3 d33_muld3 + #define R3_EQ_EPS d3_eq_eps + #define R3_NORMALIZE d3_normalize + #define SQRT sqrt #elif TYPE_FLOAT==1 -#define REAL float -#define TEST test_float -#define RNG_UNIFORM_R ssp_rng_uniform_float -#define RNG_UNIFORM_DISK_LOCAL ssp_ran_uniform_disk_float_local -#define RNG_UNIFORM_DISK ssp_ran_uniform_disk_float -#define R33_BASIS f33_basis -#define R33_MULR3 f33_mulf3 -#define R3_EQ_EPS f3_eq_eps -#define R3_NORMALIZE f3_normalize -#define SQRT sqrtf + #define REAL float + #define TEST test_float + #define RNG_UNIFORM_R ssp_rng_uniform_float + #define RNG_UNIFORM_DISK_LOCAL ssp_ran_uniform_disk_float_local + #define RNG_UNIFORM_DISK ssp_ran_uniform_disk_float + #define R33_BASIS f33_basis + #define R33_MULR3 f33_mulf3 + #define R3_EQ_EPS f3_eq_eps + #define R3_NORMALIZE f3_normalize + #define SQRT (float)sqrt #else -#error "TYPE_FLOAT must be defined either 0 or 1" + #error "TYPE_FLOAT must be defined either 0 or 1" #endif static void @@ -85,8 +85,8 @@ TEST() mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng0), RES_OK); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng1), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng0) == RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng1) == RES_OK); up[0] = RNG_UNIFORM_R(rng1, -1, 1); up[1] = RNG_UNIFORM_R(rng1, -1, 1); @@ -98,12 +98,12 @@ TEST() ssp_rng_set(rng1, seed); memset(counts, 0, sizeof(counts)); - for(i = 0; i < NBS; i++) { + FOR_EACH(i, 0, NBS) { REAL tmp[3]; RNG_UNIFORM_DISK_LOCAL(rng0, 100, pt, NULL); RNG_UNIFORM_DISK(rng1, 100, up, pt2, NULL); R33_MULR3(tmp, frame, pt); - CHECK(R3_EQ_EPS(tmp, pt2, (REAL)1.e-6), 1); + CHK(R3_EQ_EPS(tmp, pt2, (REAL)1.e-6) == 1); ASSERT(pt[2] == 0); /* locate pt in a 10x10 grid */ r = (int)((100 + pt[0]) / 20); @@ -111,9 +111,9 @@ TEST() ++counts[r][c]; } - for(r = 0; r < 10; r++) { + FOR_EACH(r, 0, 10) { int x = (r >= 5 ? r - 4 : r - 5) * 20; - for(c = 0; c < 10; c++) { + FOR_EACH(c, 0, 10) { int y = (c >= 5 ? c - 4 : c - 5) * 20; int r2 = x * x + y * y; if(r2 > 100 * 100) @@ -128,15 +128,15 @@ TEST() std = x2_sum / (REAL)nb - mean*mean; std = std > 0 ? SQRT(std) : 0; printf("%g %g\n", mean, std); - CHECK(fabs(mean - exp_mean) < 10, 1); - CHECK(fabs(std - exp_std) < 200, 1); + CHK(fabs(mean - exp_mean) < 10); + CHK(fabs(std - exp_std) < 200); - CHECK(ssp_rng_ref_put(rng0), RES_OK); - CHECK(ssp_rng_ref_put(rng1), RES_OK); + CHK(ssp_rng_ref_put(rng0) == RES_OK); + CHK(ssp_rng_ref_put(rng1) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); } #undef REAL diff --git a/src/test_ssp_rng.c b/src/test_ssp_rng.c @@ -61,13 +61,13 @@ test_rng(const struct ssp_rng_type* type) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - NCHECK(type, NULL); - CHECK(ssp_rng_create(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_create(&allocator, NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_create(NULL, type, NULL), RES_BAD_ARG); - CHECK(ssp_rng_create(&allocator, type, NULL), RES_BAD_ARG); - CHECK(ssp_rng_create(NULL, NULL, &rng), RES_BAD_ARG); - CHECK(ssp_rng_create(&allocator, NULL, &rng), RES_BAD_ARG); + CHK(type != NULL); + CHK(ssp_rng_create(NULL, NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_create(&allocator, NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_create(NULL, type, NULL) == RES_BAD_ARG); + CHK(ssp_rng_create(&allocator, type, NULL) == RES_BAD_ARG); + CHK(ssp_rng_create(NULL, NULL, &rng) == RES_BAD_ARG); + CHK(ssp_rng_create(&allocator, NULL, &rng) == RES_BAD_ARG); r = ssp_rng_create(NULL, type, &rng); #ifdef WITH_R123_AES if (r == RES_BAD_OP && type == &ssp_rng_aes) { @@ -77,97 +77,97 @@ test_rng(const struct ssp_rng_type* type) return; } #endif - CHECK(r, RES_OK); - - CHECK(ssp_rng_get_type(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_get_type(rng, NULL), RES_BAD_ARG); - CHECK(ssp_rng_get_type(NULL, &type2), RES_BAD_ARG); - CHECK(ssp_rng_get_type(rng, &type2), RES_OK); - CHECK(ssp_rng_type_eq(type, &type2), 1); - - CHECK(ssp_rng_ref_get(NULL), RES_BAD_ARG); - CHECK(ssp_rng_ref_get(rng), RES_OK); - CHECK(ssp_rng_ref_put(NULL), RES_BAD_ARG); - CHECK(ssp_rng_ref_put(rng), RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); - - CHECK(ssp_rng_create(&allocator, type, &rng), RES_OK); - CHECK(ssp_rng_set(NULL, 0), RES_BAD_ARG); - CHECK(ssp_rng_set(rng, 0), can_set ? RES_OK : RES_BAD_OP); - - CHECK(ssp_rng_create(NULL, type, &rng1), RES_OK); - CHECK(ssp_rng_create(NULL, type, &rng2), RES_OK); - CHECK(ssp_rng_discard(rng1, 10), can_discard ? RES_OK : RES_BAD_OP); + CHK(r == RES_OK); + + CHK(ssp_rng_get_type(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_get_type(rng, NULL) == RES_BAD_ARG); + CHK(ssp_rng_get_type(NULL, &type2) == RES_BAD_ARG); + CHK(ssp_rng_get_type(rng, &type2) == RES_OK); + CHK(ssp_rng_type_eq(type, &type2) == 1); + + CHK(ssp_rng_ref_get(NULL) == RES_BAD_ARG); + CHK(ssp_rng_ref_get(rng) == RES_OK); + CHK(ssp_rng_ref_put(NULL) == RES_BAD_ARG); + CHK(ssp_rng_ref_put(rng) == RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); + + CHK(ssp_rng_create(&allocator, type, &rng) == RES_OK); + CHK(ssp_rng_set(NULL, 0) == RES_BAD_ARG); + CHK(ssp_rng_set(rng, 0) == can_set ? RES_OK : RES_BAD_OP); + + CHK(ssp_rng_create(NULL, type, &rng1) == RES_OK); + CHK(ssp_rng_create(NULL, type, &rng2) == RES_OK); + CHK(ssp_rng_discard(rng1, 10) == can_discard ? RES_OK : RES_BAD_OP); if (type != &ssp_rng_random_device) { for (i = 0; i < 10; i++) ssp_rng_get(rng2); - CHECK(ssp_rng_get(rng1), ssp_rng_get(rng2)); + CHK(ssp_rng_get(rng1) == ssp_rng_get(rng2)); } FOR_EACH(i, 0, NRAND) { datai0[i] = ssp_rng_get(rng); - CHECK(datai0[i] >= ssp_rng_min(rng), 1); - CHECK(datai0[i] <= ssp_rng_max(rng), 1); + CHK(datai0[i] >= ssp_rng_min(rng)); + CHK(datai0[i] <= ssp_rng_max(rng)); FOR_EACH(j, 0, i) { - NCHECK(datai0[i], datai0[j]); + CHK(datai0[i] != datai0[j]); } } - CHECK(ssp_rng_set(rng, 0xDECAFBAD), can_set ? RES_OK : RES_BAD_OP); + CHK(ssp_rng_set(rng, 0xDECAFBAD) == can_set ? RES_OK : RES_BAD_OP); FOR_EACH(i, 0, NRAND) { datai1[i] = ssp_rng_get(rng); - NCHECK(datai1[i], datai0[i]); - CHECK(datai1[i] >= ssp_rng_min(rng), 1); - CHECK(datai1[i] <= ssp_rng_max(rng), 1); + CHK(datai1[i] != datai0[i]); + CHK(datai1[i] >= ssp_rng_min(rng)); + CHK(datai1[i] <= ssp_rng_max(rng)); FOR_EACH(j, 0, i) { - NCHECK(datai1[i], datai1[j]); + CHK(datai1[i] != datai1[j]); } } FOR_EACH(i, 0, NRAND) { datai0[i] = ssp_rng_uniform_uint64(rng, 1, 79); - CHECK(datai0[i] >= 1, 1); - CHECK(datai0[i] <= 79, 1); + CHK(datai0[i] >= 1); + CHK(datai0[i] <= 79); } FOR_EACH(i, 0, NRAND) { FOR_EACH(j, 0, NRAND) if(datai0[i] != datai0[j]) break; - NCHECK(j, NRAND); + CHK(j != NRAND); } FOR_EACH(i, 0, NRAND) { datad[i] = ssp_rng_uniform_double(rng, -5.0, 11.3); - CHECK(datad[i] >= -5.0, 1); - CHECK(datad[i] <= 11.3, 1); + CHK(datad[i] >= -5.0); + CHK(datad[i] <= 11.3); } FOR_EACH(i, 0, NRAND) { FOR_EACH(j, 0, NRAND) if(datad[i] != datad[j]) break; - NCHECK(j, NRAND); + CHK(j != NRAND); } FOR_EACH(i, 0, NRAND) { dataf[i] = ssp_rng_uniform_float(rng, -1.0, 12.5); - CHECK(dataf[i] >= -1.0, 1); - CHECK(dataf[i] <= 12.5, 1); + CHK(dataf[i] >= -1.0); + CHK(dataf[i] <= 12.5); } FOR_EACH(i, 0, NRAND) { FOR_EACH(j, 0, NRAND) if(dataf[i] != dataf[j]) break; - NCHECK(j, NRAND); + CHK(j != NRAND); } FOR_EACH(i, 0, NRAND) { datad[i] = ssp_rng_canonical(rng); - CHECK(datad[i] >= 0.0, 1); - CHECK(datad[i] < 1.0, 1); + CHK(datad[i] >= 0.0); + CHK(datad[i] < 1.0 ); FOR_EACH(j, 0, i) { - NCHECK(datad[i], datad[j]); + CHK(datad[i] != datad[j]); } } FOR_EACH(i, 0, NRAND) { dataf[i] = ssp_rng_canonical_float(rng); - CHECK(dataf[i] >= 0.0, 1); - CHECK(dataf[i] < 1.0, 1); + CHK(dataf[i] >= 0.0); + CHK(dataf[i] < 1.0); FOR_EACH(j, 0, i) { - NCHECK(dataf[i], dataf[j]); + CHK(dataf[i] != dataf[j]); } } @@ -186,31 +186,31 @@ test_rng(const struct ssp_rng_type* type) } stream = tmpfile(); - NCHECK(stream, NULL); - CHECK(ssp_rng_write(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_write(rng, NULL), RES_BAD_ARG); - CHECK(ssp_rng_write(NULL, stream), RES_BAD_ARG); - CHECK(ssp_rng_write(rng, stream), can_rw ? RES_OK : RES_BAD_OP); + CHK(stream != NULL); + CHK(ssp_rng_write(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_write(rng, NULL) == RES_BAD_ARG); + CHK(ssp_rng_write(NULL, stream) == RES_BAD_ARG); + CHK(ssp_rng_write(rng, stream) == can_rw ? RES_OK : RES_BAD_OP); FOR_EACH(i, 0, NRAND) datai0[i] = ssp_rng_get(rng); - CHECK(ssp_rng_read(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_read(rng, NULL), RES_BAD_ARG); - CHECK(ssp_rng_read(NULL, stream), RES_BAD_ARG); - CHECK(ssp_rng_read(rng, stream), can_rw ? RES_IO_ERR : RES_BAD_OP); + CHK(ssp_rng_read(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_read(rng, NULL) == RES_BAD_ARG); + CHK(ssp_rng_read(NULL, stream) == RES_BAD_ARG); + CHK(ssp_rng_read(rng, stream) == can_rw ? RES_IO_ERR : RES_BAD_OP); rewind(stream); - CHECK(ssp_rng_read(rng, stream), can_rw ? RES_OK : RES_BAD_OP); + CHK(ssp_rng_read(rng, stream) == can_rw ? RES_OK : RES_BAD_OP); if (can_rw) { FOR_EACH(i, 0, NRAND) { uint64_t rn = ssp_rng_get(rng); - CHECK(rn, datai0[i]); + CHK(rn == datai0[i]); } } fclose(stream); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); ssp_rng_ref_put(rng1); ssp_rng_ref_put(rng2); @@ -248,7 +248,7 @@ main(int argc, char** argv) ASSERT(0); } - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_ssp_rng_proxy.c b/src/test_ssp_rng_proxy.c @@ -40,34 +40,34 @@ test_creation(void) struct ssp_rng_proxy* proxy; struct ssp_rng_type type; - CHECK(ssp_rng_proxy_create(NULL, NULL, 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, NULL, 4, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, NULL, 0, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 0, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, NULL, 4, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy), RES_OK); - - CHECK(ssp_rng_proxy_get_type(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_get_type(proxy, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_get_type(NULL, &type), RES_BAD_ARG); - CHECK(ssp_rng_proxy_get_type(proxy, &type), RES_OK); - - CHECK(ssp_rng_type_eq(&type, &ssp_rng_kiss), 0); - CHECK(ssp_rng_type_eq(&type, &ssp_rng_mt19937_64), 1); - - CHECK(ssp_rng_proxy_ref_get(NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_ref_get(proxy), RES_OK); - CHECK(ssp_rng_proxy_ref_put(NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); - - CHECK(ssp_rng_proxy_create - (&mem_default_allocator, &ssp_rng_threefry, 1, &proxy), RES_OK); - CHECK(ssp_rng_proxy_get_type(proxy, &type), RES_OK); - CHECK(ssp_rng_type_eq(&type, &ssp_rng_threefry), 1); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); + CHK(ssp_rng_proxy_create(NULL, NULL, 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, NULL, 4, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, NULL, 0, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 0, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, NULL, 4, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy) == RES_OK); + + CHK(ssp_rng_proxy_get_type(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_get_type(proxy, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_get_type(NULL, &type) == RES_BAD_ARG); + CHK(ssp_rng_proxy_get_type(proxy, &type) == RES_OK); + + CHK(ssp_rng_type_eq(&type, &ssp_rng_kiss) == 0); + CHK(ssp_rng_type_eq(&type, &ssp_rng_mt19937_64) == 1); + + CHK(ssp_rng_proxy_ref_get(NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_ref_get(proxy) == RES_OK); + CHK(ssp_rng_proxy_ref_put(NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); + + CHK(ssp_rng_proxy_create + (&mem_default_allocator, &ssp_rng_threefry, 1, &proxy) == RES_OK); + CHK(ssp_rng_proxy_get_type(proxy, &type) == RES_OK); + CHK(ssp_rng_type_eq(&type, &ssp_rng_threefry) == 1); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); } static void @@ -79,35 +79,35 @@ test_rng_from_proxy(void) uint64_t r[4]; size_t i, j, k; - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy), RES_OK); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy) == RES_OK); - CHECK(ssp_rng_proxy_create_rng(NULL, 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_rng(NULL, 0, &rng[0]), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, &rng[0]), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, &rng[1]), RES_BAD_ARG); - CHECK(ssp_rng_ref_put(rng[0]), RES_OK); + CHK(ssp_rng_proxy_create_rng(NULL, 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_rng(proxy, 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_rng(NULL, 0, &rng[0]) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_rng(proxy, 0, &rng[0]) == RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy, 0, &rng[1]) == RES_BAD_ARG); + CHK(ssp_rng_ref_put(rng[0]) == RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy, 4, &rng[0]), RES_BAD_ARG); + CHK(ssp_rng_proxy_create_rng(proxy, 4, &rng[0]) == RES_BAD_ARG); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_proxy_create_rng(proxy, i, &rng[i]), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_proxy_create_rng(proxy, i, &rng[i]) == RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); - CHECK(ssp_rng_get_type(rng[0], &type), RES_OK); + CHK(ssp_rng_get_type(rng[0], &type) == RES_OK); FOR_EACH(i, 1, 4) { struct ssp_rng_type type2; - CHECK(ssp_rng_get_type(rng[i], &type2), RES_OK); - CHECK(ssp_rng_type_eq(&type, &type2), 1); + CHK(ssp_rng_get_type(rng[i], &type2) == RES_OK); + CHK(ssp_rng_type_eq(&type, &type2) == 1); } FOR_EACH(i, 0, NRANDS) { FOR_EACH(j, 0, 4) { r[j] = ssp_rng_get(rng[j]); - FOR_EACH(k, 0, j) NCHECK(r[k], r[j]); + FOR_EACH(k, 0, j) CHK(r[k] != r[j]); } } - FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng[i]), RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_ref_put(rng[i]) == RES_OK); } static void @@ -120,26 +120,26 @@ test_multi_proxies(void) struct ssp_rng* rng3; size_t i; - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_threefry, 1, &proxy1), RES_OK); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_threefry, 1, &proxy2), RES_OK); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_threefry, 1, &proxy1) == RES_OK); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_threefry, 1, &proxy2) == RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy1, 0, &rng1), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy2, 0, &rng2), RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy1, 0, &rng1) == RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy2, 0, &rng2) == RES_OK); ssp_rng_create(NULL, &ssp_rng_threefry, &rng3); - CHECK(ssp_rng_proxy_ref_put(proxy1), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy2), RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy1) == RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy2) == RES_OK); ssp_rng_discard(rng1, COUNT); ssp_rng_discard(rng3, COUNT+1); FOR_EACH(i, 0, COUNT) ssp_rng_get(rng2); - CHECK(ssp_rng_get(rng1), ssp_rng_get(rng2)); - CHECK(ssp_rng_get(rng1), ssp_rng_get(rng3)); + CHK(ssp_rng_get(rng1) == ssp_rng_get(rng2)); + CHK(ssp_rng_get(rng1) == ssp_rng_get(rng3)); - CHECK(ssp_rng_ref_put(rng1), RES_OK); - CHECK(ssp_rng_ref_put(rng2), RES_OK); - CHECK(ssp_rng_ref_put(rng3), RES_OK); + CHK(ssp_rng_ref_put(rng1) == RES_OK); + CHK(ssp_rng_ref_put(rng2) == RES_OK); + CHK(ssp_rng_ref_put(rng3) == RES_OK); } static void @@ -151,45 +151,45 @@ test_proxy_from_rng(void) uint64_t r[4]; size_t i, j, k; - CHECK(ssp_rng_create(NULL, &ssp_rng_threefry, &rng[0]), RES_OK); - CHECK(ssp_rng_discard(rng[0], COUNT), RES_OK); + CHK(ssp_rng_create(NULL, &ssp_rng_threefry, &rng[0]) == RES_OK); + CHK(ssp_rng_discard(rng[0], COUNT) == RES_OK); - CHECK(ssp_rng_proxy_create_from_rng(NULL, NULL, 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 0, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, NULL, 1, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 1, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, NULL, 0, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 0, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, NULL, 1, &proxy), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 1, &proxy), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, &rng[1]), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, &rng[2]), RES_BAD_ARG); - CHECK(ssp_rng_proxy_create_rng(proxy, 1, &rng[2]), RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, NULL, 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 0, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, NULL, 1, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 1, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, NULL, 0, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 0, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, NULL, 1, &proxy) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 1, &proxy) == RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy, 0, &rng[1]) == RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy, 0, &rng[2]) == RES_BAD_ARG); + CHK(ssp_rng_proxy_create_rng(proxy, 1, &rng[2]) == RES_BAD_ARG); - CHECK(ssp_rng_get(rng[0]), ssp_rng_get(rng[1])); + CHK(ssp_rng_get(rng[0]) == ssp_rng_get(rng[1])); - CHECK(ssp_rng_ref_put(rng[1]), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); + CHK(ssp_rng_ref_put(rng[1]) == RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); - CHECK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 4, &proxy), RES_OK); - CHECK(ssp_rng_ref_put(rng[0]), RES_OK); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_proxy_create_rng(proxy, i, &rng[i]), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); + CHK(ssp_rng_proxy_create_from_rng(NULL, rng[0], 4, &proxy) == RES_OK); + CHK(ssp_rng_ref_put(rng[0]) == RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_proxy_create_rng(proxy, i, &rng[i]) == RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); - CHECK(ssp_rng_get_type(rng[0], &type), RES_OK); + CHK(ssp_rng_get_type(rng[0], &type) == RES_OK); FOR_EACH(i, 1, 4) { struct ssp_rng_type type2; - CHECK(ssp_rng_get_type(rng[i], &type2), RES_OK); - CHECK(ssp_rng_type_eq(&type, &type2), 1); + CHK(ssp_rng_get_type(rng[i], &type2) == RES_OK); + CHK(ssp_rng_type_eq(&type, &type2) == 1); } FOR_EACH(i, 0, NRANDS) { FOR_EACH(j, 0, 4) { r[j] = ssp_rng_get(rng[j]); - FOR_EACH(k, 0, j) NCHECK(r[k], r[j]); + FOR_EACH(k, 0, j) CHK(r[k] != r[j]); } } - FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng[i]), RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_ref_put(rng[i]) == RES_OK); } static void @@ -202,38 +202,38 @@ test_read(void) uint64_t r[4]; size_t i, j, k; - CHECK(ssp_rng_create(NULL, &ssp_rng_mt19937_64, &rng), RES_OK); - CHECK(ssp_rng_discard(rng, COUNT), RES_OK); + CHK(ssp_rng_create(NULL, &ssp_rng_mt19937_64, &rng) == RES_OK); + CHK(ssp_rng_discard(rng, COUNT) == RES_OK); stream = tmpfile(); - NCHECK(stream, NULL); - CHECK(ssp_rng_write(rng, stream), RES_OK); + CHK(stream != NULL); + CHK(ssp_rng_write(rng, stream) == RES_OK); rewind(stream); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy), RES_OK); - CHECK(ssp_rng_proxy_read(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_read(proxy, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_read(NULL, stream), RES_BAD_ARG); - CHECK(ssp_rng_proxy_read(proxy, stream), RES_OK); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_mt19937_64, 4, &proxy) == RES_OK); + CHK(ssp_rng_proxy_read(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_read(proxy, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_read(NULL, stream) == RES_BAD_ARG); + CHK(ssp_rng_proxy_read(proxy, stream) == RES_OK); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_proxy_create_rng(proxy, i, &rng1[i]), RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_proxy_create_rng(proxy, i, &rng1[i]) == RES_OK); r[0] = ssp_rng_get(rng); - CHECK(r[0], ssp_rng_get(rng1[0])); - NCHECK(r[0], ssp_rng_get(rng1[1])); - NCHECK(r[0], ssp_rng_get(rng1[2])); - NCHECK(r[0], ssp_rng_get(rng1[3])); + CHK(r[0] == ssp_rng_get(rng1[0])); + CHK(r[0] != ssp_rng_get(rng1[1])); + CHK(r[0] != ssp_rng_get(rng1[2])); + CHK(r[0] != ssp_rng_get(rng1[3])); FOR_EACH(i, 0, NRANDS) { FOR_EACH(j, 0, 4) { r[j] = ssp_rng_get(rng1[j]); - FOR_EACH(k, 0, j) NCHECK(r[k], r[j]); + FOR_EACH(k, 0, j) CHK(r[k] != r[j]); } } - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng1[i]), RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); + FOR_EACH(i, 0, 4) CHK(ssp_rng_ref_put(rng1[i]) == RES_OK); fclose(stream); } @@ -247,28 +247,28 @@ test_write(void) uint64_t r; stream = tmpfile(); - NCHECK(stream, NULL); + CHK(stream != NULL); - CHECK(ssp_rng_proxy_create(NULL, &ssp_rng_ranlux48, 1, &proxy), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy, 0, &rng0), RES_OK); + CHK(ssp_rng_proxy_create(NULL, &ssp_rng_ranlux48, 1, &proxy) == RES_OK); + CHK(ssp_rng_proxy_create_rng(proxy, 0, &rng0) == RES_OK); - CHECK(ssp_rng_proxy_write(NULL, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_write(proxy, NULL), RES_BAD_ARG); - CHECK(ssp_rng_proxy_write(NULL, stream), RES_BAD_ARG); - CHECK(ssp_rng_proxy_write(proxy, stream), RES_OK); + CHK(ssp_rng_proxy_write(NULL, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_write(proxy, NULL) == RES_BAD_ARG); + CHK(ssp_rng_proxy_write(NULL, stream) == RES_BAD_ARG); + CHK(ssp_rng_proxy_write(proxy, stream) == RES_OK); - CHECK(ssp_rng_create(NULL, &ssp_rng_ranlux48, &rng1), RES_OK); + CHK(ssp_rng_create(NULL, &ssp_rng_ranlux48, &rng1) == RES_OK); r = ssp_rng_get(rng0); - CHECK(r, ssp_rng_get(rng1)); + CHK(r == ssp_rng_get(rng1)); rewind(stream); - CHECK(ssp_rng_read(rng1, stream), RES_OK); - CHECK(r, ssp_rng_get(rng1)); - CHECK(ssp_rng_get(rng0), ssp_rng_get(rng1)); + CHK(ssp_rng_read(rng1, stream) == RES_OK); + CHK(r == ssp_rng_get(rng1)); + CHK(ssp_rng_get(rng0) == ssp_rng_get(rng1)); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); - CHECK(ssp_rng_ref_put(rng0), RES_OK); - CHECK(ssp_rng_ref_put(rng1), RES_OK); + CHK(ssp_rng_proxy_ref_put(proxy) == RES_OK); + CHK(ssp_rng_ref_put(rng0) == RES_OK); + CHK(ssp_rng_ref_put(rng1) == RES_OK); fclose(stream); } @@ -283,6 +283,6 @@ main(int argc, char** argv) test_proxy_from_rng(); test_read(); test_write(); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; }