star-schiff

Library for estimating radiative properties
git clone git://git.meso-star.com/star-schiff.git
Log | Files | Refs | README | LICENSE

commit 656873e0a0f346c4da7be3b183870eacfa429dcb
parent 936329e2a74a113488f4d369df25832fea3a8d57
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Sat, 21 Sep 2019 14:41:59 +0200

Overall updates of the dependencies

Replace the deprecated RSys [N]CHECK macros. Update the scene sessions
API by the scene view one.

Diffstat:
Mcmake/CMakeLists.txt | 8++++----
Msrc/sschiff_estimator.c | 42++++++++++++++++++++----------------------
Msrc/test_sschiff_device.c | 66+++++++++++++++++++++++++++++++++---------------------------------
Msrc/test_sschiff_estimator_cylinder.c | 42+++++++++++++++++++++---------------------
Msrc/test_sschiff_estimator_rhodo.c | 222++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_sschiff_estimator_sphere.c | 281++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/test_sschiff_utils.h | 44++++++++++++++++++++++----------------------
7 files changed, 353 insertions(+), 352 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -24,10 +24,10 @@ option(NO_TEST "Disable the test" OFF) ################################################################################ # Check dependencies ################################################################################ -find_package(RCMake 0.2.3 REQUIRED) -find_package(RSys 0.3 REQUIRED) -find_package(StarSP 0.3 REQUIRED) -find_package(Star3D 0.3 REQUIRED) +find_package(RCMake 0.4 REQUIRED) +find_package(RSys 0.8 REQUIRED) +find_package(StarSP 0.8 REQUIRED) +find_package(Star3D 0.6 REQUIRED) find_package(OpenMP 1.2 REQUIRED) find_package(PkgConfig REQUIRED) diff --git a/src/sschiff_estimator.c b/src/sschiff_estimator.c @@ -80,6 +80,7 @@ struct integrator_context { /* Geometry of the micro particle */ struct s3d_shape* shape; struct s3d_scene* scene; + struct s3d_scene_view* view; struct ssp_rng* rng; /* Random Number Generator */ size_t nwavelengths; /* #wavelengths */ @@ -247,7 +248,7 @@ self_hit static res_T compute_path_length (struct sschiff_device* dev, - struct s3d_scene* scn, + struct s3d_scene_view* view, const struct s3d_hit* first_hit, const float ray_org[3], const float ray_dir[3], @@ -258,7 +259,7 @@ compute_path_length struct s3d_hit hit_from, hit; double len = 0; float dst; - ASSERT(scn && first_hit && ray_org && ray_dir && !S3D_HIT_NONE(first_hit)); + ASSERT(view && first_hit && ray_org && ray_dir && !S3D_HIT_NONE(first_hit)); ASSERT(scale > 0); (void)dev; @@ -268,7 +269,7 @@ compute_path_length do { do { range[0] = nextafterf(range[0], range[1]); - S3D(scene_trace_ray(scn, ray_org, ray_dir, range, NULL, &hit)); + S3D(scene_view_trace_ray(view, ray_org, ray_dir, range, NULL, &hit)); } while(hit.distance < range[0] || self_hit(&hit_from, &hit, 1.e-6f)); if(S3D_HIT_NONE(&hit)) @@ -280,7 +281,7 @@ compute_path_length do { range[0] = nextafterf(range[0], range[1]); - S3D(scene_trace_ray(scn, ray_org, ray_dir, range, NULL, &hit)); + S3D(scene_view_trace_ray(view, ray_org, ray_dir, range, NULL, &hit)); } while(hit.distance < range[0] || self_hit(&hit_from, &hit, 1.e-6f)); range[0] = hit.distance; @@ -439,12 +440,12 @@ accum_monte_carlo_weight f3_mulf(y, axis_y, (float)sample[1]); f3_add(ray_org[0], f3_add(ray_org[0], x, y), org); - S3D(scene_trace_ray(ctx->scene, ray_org[0], axis_z, range, NULL, &hit)); + S3D(scene_view_trace_ray(ctx->view, ray_org[0], axis_z, range, NULL, &hit)); /* NULL cross section and differential cross section weight */ if(S3D_HIT_NONE(&hit)) break; - res = compute_path_length(dev, ctx->scene, &hit, ray_org[0], axis_z, + res = compute_path_length(dev, ctx->view, &hit, ray_org[0], axis_z, dist_scaling, &path_length[0]); if(res != RES_OK) { /* Handle numerical/geometry issues */ ++nfailures; @@ -464,11 +465,11 @@ accum_monte_carlo_weight f3_mulf(y, axis_y, (float)sample[1]); f3_add(ray_org[1], f3_add(ray_org[1], x, y), org); - S3D(scene_trace_ray(ctx->scene, ray_org[1], axis_z, range, NULL, &hit)); + S3D(scene_view_trace_ray(ctx->view, ray_org[1], axis_z, range, NULL, &hit)); if(S3D_HIT_NONE(&hit)) /* NULL differential cross section weight */ break; - res = compute_path_length(dev, ctx->scene, &hit, ray_org[1], axis_z, + res = compute_path_length(dev, ctx->view, &hit, ray_org[1], axis_z, dist_scaling, &path_length[1]); if(res != RES_OK) { /* Handle numerical/geometry issues */ ++nfailures; @@ -511,7 +512,7 @@ radiative_properties ASSERT(dev && ndirs && ctx && area_scaling > 0 && dist_scaling > 0); (void)istep; - S3D(scene_get_aabb(ctx->scene, lower, upper)); + S3D(scene_view_get_aabb(ctx->view, lower, upper)); /* AABB vertex layout * 6-------7 @@ -549,12 +550,12 @@ radiative_properties } FOR_EACH(idir, 0, ndirs) { - float dir[4]; + float dir[3]; float basis[9]; float transform[12]; float pt[8][3]; - ssp_ran_sphere_uniform(ctx->rng, dir); + ssp_ran_sphere_uniform_float(ctx->rng, dir, NULL); /* Build the transformation matrix from world to footprint space. Use the * AABB centroid as the origin of the footprint space. */ @@ -1224,7 +1225,7 @@ begin_realisation struct integrator_context* ctx) { res_T res = RES_OK; - ASSERT(dev && distrib && volume_scaling && ctx); + ASSERT(dev && distrib && volume_scaling && ctx && !ctx->view); /* Sample a particle */ res = distrib->sample @@ -1240,17 +1241,14 @@ begin_realisation } /* Build the Star-3D representation of the sampled shape */ - S3D(scene_begin_session(ctx->scene, S3D_TRACE)); + S3D(scene_view_create(ctx->scene, S3D_TRACE, &ctx->view)); exit: return res; error: - { - /* Disable active session if necessary */ - int mask; - if(S3D(scene_get_session_mask(ctx->scene, &mask)), mask) { - S3D(scene_end_session(ctx->scene)); - } + if(ctx->view) { + S3D(scene_view_ref_put(ctx->view)); + ctx->view = NULL; } goto exit; } @@ -1258,8 +1256,9 @@ error: static FINLINE void end_realisation(struct integrator_context* ctx) { - ASSERT(ctx); - S3D(scene_end_session(ctx->scene)); + ASSERT(ctx && ctx->view); + S3D(scene_view_ref_put(ctx->view)); + ctx->view = NULL; } static void @@ -1609,7 +1608,6 @@ sschiff_integrate /* Merge the per thread integration results */ FOR_EACH(i, 0, dev->nthreads) { - size_t iwlen; FOR_EACH(iwlen, 0, nwavelengths) { size_t iangle; #define MC_ACCUM(Data) { \ diff --git a/src/test_sschiff_device.c b/src/test_sschiff_device.c @@ -43,58 +43,58 @@ main(int argc, char** argv) (void)argc, (void)argv; - CHECK(sschiff_device_create(NULL, NULL, N, 0, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_device_create(NULL, NULL, N, 0, NULL, &dev), RES_OK); + CHK(sschiff_device_create(NULL, NULL, N, 0, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_device_create(NULL, NULL, N, 0, NULL, &dev) == RES_OK); - CHECK(sschiff_device_ref_get(NULL), RES_BAD_ARG); - CHECK(sschiff_device_ref_get(dev), RES_OK); - CHECK(sschiff_device_ref_put(NULL), RES_BAD_ARG); - CHECK(sschiff_device_ref_put(dev), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); + CHK(sschiff_device_ref_get(NULL) == RES_BAD_ARG); + CHK(sschiff_device_ref_get(dev) == RES_OK); + CHK(sschiff_device_ref_put(NULL) == RES_BAD_ARG); + CHK(sschiff_device_ref_put(dev) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(MEM_ALLOCATED_SIZE(&allocator), 0); - CHECK(sschiff_device_create(NULL, &allocator, N, 1, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_device_create(NULL, &allocator, N, 1, NULL, &dev), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); - CHECK(MEM_ALLOCATED_SIZE(&allocator), 0); + CHK(MEM_ALLOCATED_SIZE(&allocator) == 0); + CHK(sschiff_device_create(NULL, &allocator, N, 1, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_device_create(NULL, &allocator, N, 1, NULL, &dev) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); + CHK(MEM_ALLOCATED_SIZE(&allocator) == 0); - CHECK(logger_init(&allocator, &logger), RES_OK); + CHK(logger_init(&allocator, &logger) == RES_OK); logger_set_stream(&logger, LOG_OUTPUT, log_stream, NULL); logger_set_stream(&logger, LOG_ERROR, log_stream, NULL); logger_set_stream(&logger, LOG_WARNING, log_stream, NULL); - CHECK(sschiff_device_create(&logger, NULL, N, 0, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_device_create(&logger, NULL, N, 0, NULL, &dev), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); + CHK(sschiff_device_create(&logger, NULL, N, 0, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_device_create(&logger, NULL, N, 0, NULL, &dev) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); - CHECK(sschiff_device_create(&logger, &allocator, N, 1, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_device_create(&logger, &allocator, N, 1, NULL, &dev), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); + CHK(sschiff_device_create(&logger, &allocator, N, 1, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_device_create(&logger, &allocator, N, 1, NULL, &dev) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); - CHECK(s3d_device_create(NULL, NULL, 0, &s3d), RES_OK); - CHECK(sschiff_device_create(NULL, NULL, N, 0, s3d, NULL), RES_BAD_ARG); - CHECK(sschiff_device_create(NULL, NULL, N, 0, s3d, &dev), RES_OK); + CHK(s3d_device_create(NULL, NULL, 0, &s3d) == RES_OK); + CHK(sschiff_device_create(NULL, NULL, N, 0, s3d, NULL) == RES_BAD_ARG); + CHK(sschiff_device_create(NULL, NULL, N, 0, s3d, &dev) == RES_OK); - CHECK(s3d_device_ref_put(s3d), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); + CHK(s3d_device_ref_put(s3d) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); - CHECK(sschiff_device_create(NULL, NULL, 0, 0, NULL, &dev), RES_BAD_ARG); - CHECK(sschiff_device_create(NULL, NULL, 1, 0, NULL, &dev), RES_OK); + CHK(sschiff_device_create(NULL, NULL, 0, 0, NULL, &dev) == RES_BAD_ARG); + CHK(sschiff_device_create(NULL, NULL, 1, 0, NULL, &dev) == RES_OK); - CHECK(sschiff_device_get_threads_count(NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_device_get_threads_count(dev, NULL), RES_BAD_ARG); - CHECK(sschiff_device_get_threads_count(NULL, &nthreads), RES_BAD_ARG); - CHECK(sschiff_device_get_threads_count(dev, &nthreads), RES_OK); - CHECK(nthreads, 1); + CHK(sschiff_device_get_threads_count(NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_device_get_threads_count(dev, NULL) == RES_BAD_ARG); + CHK(sschiff_device_get_threads_count(NULL, &nthreads) == RES_BAD_ARG); + CHK(sschiff_device_get_threads_count(dev, &nthreads) == RES_OK); + CHK(nthreads == 1); - CHECK(sschiff_device_ref_put(dev), RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); logger_release(&logger); 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_sschiff_estimator_cylinder.c b/src/test_sschiff_estimator_cylinder.c @@ -49,7 +49,7 @@ get_material_property struct sschiff_material_properties* props) { (void)mtl; - CHECK(eq_eps(wavelength, 0.6, 1.e-6), 1); + CHK(eq_eps(wavelength, 0.6, 1.e-6) == 1); props->medium_refractive_index = 4.0/3.0; props->relative_imaginary_refractive_index = 4.e-3; props->relative_real_refractive_index = 1.01; @@ -66,7 +66,7 @@ sample_cylinder double sphere_volume; double sample; - NCHECK(volume_scaling, NULL); + CHK(volume_scaling != NULL); sample = ssp_ran_lognormal(rng, log(sampler_ctx->mean_radius), log(sampler_ctx->sigma)); sphere_volume = 4.0*PI*sample*sample*sample / 3.0; @@ -421,12 +421,12 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 0, &s3d), RES_OK); - CHECK(s3d_shape_create_mesh(s3d, &shape), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 0, &s3d) == RES_OK); + CHK(s3d_shape_create_mesh(s3d, &shape) == RES_OK); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); - CHECK(sschiff_device_create - (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, s3d, &dev), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng) == RES_OK); + CHK(sschiff_device_create + (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, s3d, &dev) == RES_OK); geometry_init_cylinder(&geometry, 64); cylinder.geometry = &geometry; @@ -454,15 +454,15 @@ main(int argc, char** argv) distrib.context = &sampler_ctx; time_current(&t0); - CHECK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, + CHK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, sschiff_uniform_scattering_angles, nscatt_angles, ngeoms, ndirs, 0, - &estimator), RES_OK); + &estimator) == RES_OK); time_current(&t1); time_sub(&t0, &t1, &t0); time_dump(&t0, TIME_MIN|TIME_SEC|TIME_MSEC, NULL, buf, sizeof(buf)); - CHECK(sschiff_estimator_get_cross_section - (estimator, 0, &cross_section), RES_OK); + CHK(sschiff_estimator_get_cross_section + (estimator, 0, &cross_section) == RES_OK); printf("%u - x = %g - Wavelength = %g micron - %s\n", (unsigned)i, x[i], wavelength, buf); @@ -474,7 +474,7 @@ main(int argc, char** argv) printf(" Extinction ~ %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", results[i].extinction_E, results[i].extinction_SE, val->E, val->SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); val = &cross_section.absorption; result.E = results[i].absorption_E; @@ -483,7 +483,7 @@ main(int argc, char** argv) printf(" Absorption ~ %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", results[i].absorption_E, results[i].absorption_SE, val->E, val->SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); val = &cross_section.scattering; result.E = results[i].scattering_E; @@ -492,7 +492,7 @@ main(int argc, char** argv) printf(" Scattering ~ %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", results[i].scattering_E, results[i].scattering_SE, val->E, val->SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); val = &cross_section.average_projected_area; result.E = results[i].avg_proj_area_E; @@ -501,21 +501,21 @@ main(int argc, char** argv) printf(" Proj Area ~ %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", results[i].avg_proj_area_E, results[i].avg_proj_area_SE, val->E, val->SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); - CHECK(sschiff_estimator_ref_put(estimator), RES_OK); + CHK(sschiff_estimator_ref_put(estimator) == RES_OK); } - CHECK(sschiff_device_ref_put(dev), RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); - CHECK(s3d_device_ref_put(s3d), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_device_ref_put(s3d) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); geometry_release(&geometry); 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_sschiff_estimator_rhodo.c b/src/test_sschiff_estimator_rhodo.c @@ -2561,7 +2561,7 @@ sample_cylinder double sphere_volume; double sample; - NCHECK(volume_scaling, NULL); + CHK(volume_scaling != NULL); sample = ssp_ran_lognormal(rng, log(sampler_ctx->mean_radius), log(sampler_ctx->sigma)); sphere_volume = 4.0*PI*sample*sample*sample / 3.0; @@ -2613,11 +2613,11 @@ main(int argc, char** argv) (void)argc, (void)argv; mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 0, &s3d), RES_OK); - CHECK(s3d_shape_create_mesh(s3d, &shape), RES_OK); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); - CHECK(sschiff_device_create - (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, NULL, &dev), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 0, &s3d) == RES_OK); + CHK(s3d_shape_create_mesh(s3d, &shape) == RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng) == RES_OK); + CHK(sschiff_device_create + (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, NULL, &dev) == RES_OK); geometry_init_cylinder(&geometry, 64); cylinder.geometry = &geometry; @@ -2644,12 +2644,12 @@ main(int argc, char** argv) distrib.sample = sample_cylinder; distrib.context = &sampler_ctx; - CHECK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, + CHK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, sschiff_uniform_scattering_angles, nscatt_angles, ngeoms, ndirs, 0, - &estimator), RES_OK); + &estimator) == RES_OK); - CHECK(sschiff_estimator_get_cross_section - (estimator, 0, &cross_section), RES_OK); + CHK(sschiff_estimator_get_cross_section + (estimator, 0, &cross_section) == RES_OK); printf("Wavelength = %g micron\n", wavelength); @@ -2659,7 +2659,7 @@ main(int argc, char** argv) compute_estimation_intersection(interval, 4, &result, val); printf(" Extinction = %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", result.E, result.SE, val->E, val->SE, interval[1]-interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); result.E = cross_section_result.absorption_E; result.SE = cross_section_result.absorption_SE; @@ -2667,7 +2667,7 @@ main(int argc, char** argv) compute_estimation_intersection(interval, 4, &result, val); printf(" Absorption = %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", result.E, result.SE, val->E, val->SE, interval[1]-interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); result.E = cross_section_result.scattering_E; result.SE = cross_section_result.scattering_SE; @@ -2675,58 +2675,58 @@ main(int argc, char** argv) compute_estimation_intersection(interval, 4, &result, val); printf(" Scattering = %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", result.E, result.SE, val->E, val->SE, interval[1]-interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); printf(" Proj area ~ %9.3g +/- %9.3g\n", cross_section.average_projected_area.E, cross_section.average_projected_area.SE); - CHECK(sschiff_estimator_get_scattering_angles(estimator, &angles, &count), RES_OK); - CHECK(count, nscatt_angles); + CHK(sschiff_estimator_get_scattering_angles(estimator, &angles, &count) == RES_OK); + CHK(count == nscatt_angles); #define LIMIT_ANGLE sschiff_estimator_get_limit_scattering_angle_index - CHECK(LIMIT_ANGLE(NULL, 1, NULL), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(estimator, 1, NULL), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(NULL, 0, NULL), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(estimator, 0, NULL), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(NULL, 1, &ilimit_angle), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(estimator, 1, &ilimit_angle), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(NULL, 0, &ilimit_angle), RES_BAD_ARG); - CHECK(LIMIT_ANGLE(estimator, 0, &ilimit_angle), RES_OK); + CHK(LIMIT_ANGLE(NULL, 1, NULL) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(estimator, 1, NULL) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(NULL, 0, NULL) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(estimator, 0, NULL) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(NULL, 1, &ilimit_angle) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(estimator, 1, &ilimit_angle) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(NULL, 0, &ilimit_angle) == RES_BAD_ARG); + CHK(LIMIT_ANGLE(estimator, 0, &ilimit_angle) == RES_OK); #undef LIMIT_ANGLE - CHECK(ilimit_angle < count, 1); + CHK(ilimit_angle < count); printf(" Limit angle = %g radians; ", angles[ilimit_angle]); #define GET_N sschiff_estimator_get_wide_scattering_angle_model_parameter - CHECK(GET_N(NULL, 1, NULL), RES_BAD_ARG); - CHECK(GET_N(estimator, 1, NULL), RES_BAD_ARG); - CHECK(GET_N(NULL, 0, NULL), RES_BAD_ARG); - CHECK(GET_N(estimator, 0, NULL), RES_BAD_ARG); - CHECK(GET_N(NULL, 1, &n), RES_BAD_ARG); - CHECK(GET_N(estimator, 1, &n), RES_BAD_ARG); - CHECK(GET_N(NULL, 0, &n), RES_BAD_ARG); - CHECK(GET_N(estimator, 0, &n), RES_OK); + CHK(GET_N(NULL, 1, NULL) == RES_BAD_ARG); + CHK(GET_N(estimator, 1, NULL) == RES_BAD_ARG); + CHK(GET_N(NULL, 0, NULL) == RES_BAD_ARG); + CHK(GET_N(estimator, 0, NULL) == RES_BAD_ARG); + CHK(GET_N(NULL, 1, &n) == RES_BAD_ARG); + CHK(GET_N(estimator, 1, &n) == RES_BAD_ARG); + CHK(GET_N(NULL, 0, &n) == RES_BAD_ARG); + CHK(GET_N(estimator, 0, &n) == RES_OK); #undef GET_N printf("n = %g\n", n); #define DIFF_XSECTION sschiff_estimator_get_differential_cross_section i = ilimit_angle; - CHECK(DIFF_XSECTION(NULL, 1, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 1, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 0, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 0, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 1, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 1, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 0, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 0, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 1, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 1, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 0, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 0, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 1, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 1, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(NULL, 0, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION(estimator, 0, i, &result), RES_OK); + CHK(DIFF_XSECTION(NULL, 1, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 1, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 0, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 0, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 1, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 1, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 0, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 0, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 1, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 1, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 0, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 0, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 1, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 1, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(NULL, 0, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION(estimator, 0, i, &result) == RES_OK); #undef DIFF_XSECTION result2.E = 7.89191057312786e-2; @@ -2734,26 +2734,26 @@ main(int argc, char** argv) compute_estimation_intersection(interval, 4, &result2, &result); printf(" Ws = %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", result2.E, result2.SE, result.E, result.SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); #define DIFF_XSECTION_CUMUL \ sschiff_estimator_get_differential_cross_section_cumulative - CHECK(DIFF_XSECTION_CUMUL(NULL, 1, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 1, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 0, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 0, nscatt_angles, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 1, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 1, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 0, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 0, i, NULL), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 1, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 1, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 0, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 0, nscatt_angles, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 1, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 1, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(NULL, 0, i, &result), RES_BAD_ARG); - CHECK(DIFF_XSECTION_CUMUL(estimator, 0, i, &result), RES_OK); + CHK(DIFF_XSECTION_CUMUL(NULL, 1, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 1, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 0, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 0, nscatt_angles, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 1, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 1, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 0, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 0, i, NULL) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 1, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 1, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 0, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 0, nscatt_angles, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 1, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 1, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(NULL, 0, i, &result) == RES_BAD_ARG); + CHK(DIFF_XSECTION_CUMUL(estimator, 0, i, &result) == RES_OK); #undef DIFF_XSECTION_CUMUL result2.E = 2.57417550513944; @@ -2761,17 +2761,17 @@ main(int argc, char** argv) compute_estimation_intersection(interval, 4, &result2, &result); printf(" Wc = %9.3g +/- %9.3g ~ %9.3g +/- %9.3g (%9.3g)\n", result2.E, result2.SE, result.E, result.SE, interval[1] - interval[0]); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); #define PHASE_FUNCTION sschiff_estimator_get_phase_function - CHECK(PHASE_FUNCTION(NULL, 1, NULL), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(estimator, 1, NULL), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(NULL, 0, NULL), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(estimator, 0, NULL), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(NULL, 1, &func), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(estimator, 1, &func), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(NULL, 0, &func), RES_BAD_ARG); - CHECK(PHASE_FUNCTION(estimator, 0, &func), RES_OK); + CHK(PHASE_FUNCTION(NULL, 1, NULL) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(estimator, 1, NULL) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(NULL, 0, NULL) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(estimator, 0, NULL) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(NULL, 1, &func) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(estimator, 1, &func) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(NULL, 0, &func) == RES_BAD_ARG); + CHK(PHASE_FUNCTION(estimator, 0, &func) == RES_OK); #undef PHASE_FUNCTION printf("\n# Phase function\n"); @@ -2787,19 +2787,19 @@ main(int argc, char** argv) * is not sufficiently well estimated due to a limited number of * realisations. */ if(i <= ilimit_angle) { - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); } } #define CUMULATIVE sschiff_estimator_get_phase_function_cumulative - CHECK(CUMULATIVE(NULL, 1, NULL), RES_BAD_ARG); - CHECK(CUMULATIVE(estimator, 1, NULL), RES_BAD_ARG); - CHECK(CUMULATIVE(NULL, 0, NULL), RES_BAD_ARG); - CHECK(CUMULATIVE(estimator, 0, NULL), RES_BAD_ARG); - CHECK(CUMULATIVE(NULL, 1, &cumul), RES_BAD_ARG); - CHECK(CUMULATIVE(estimator, 1, &cumul), RES_BAD_ARG); - CHECK(CUMULATIVE(NULL, 0, &cumul), RES_BAD_ARG); - CHECK(CUMULATIVE(estimator, 0, &cumul), RES_OK); + CHK(CUMULATIVE(NULL, 1, NULL) == RES_BAD_ARG); + CHK(CUMULATIVE(estimator, 1, NULL) == RES_BAD_ARG); + CHK(CUMULATIVE(NULL, 0, NULL) == RES_BAD_ARG); + CHK(CUMULATIVE(estimator, 0, NULL) == RES_BAD_ARG); + CHK(CUMULATIVE(NULL, 1, &cumul) == RES_BAD_ARG); + CHK(CUMULATIVE(estimator, 1, &cumul) == RES_BAD_ARG); + CHK(CUMULATIVE(NULL, 0, &cumul) == RES_BAD_ARG); + CHK(CUMULATIVE(estimator, 0, &cumul) == RES_OK); #undef CUMULATIVE printf("\n# Cumulative phase function\n"); @@ -2815,31 +2815,31 @@ main(int argc, char** argv) * is not sufficiently well estimated due to a limited number of * realisations. */ if(i <= ilimit_angle) { - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); } } - NCHECK(sa_add(thetas, 2000), NULL); + CHK(sa_add(thetas, 2000) != NULL); #define INV_CUMULATIVE sschiff_estimator_inverse_cumulative_phase_function - CHECK(INV_CUMULATIVE(NULL, 1, NULL, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 1, NULL, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 0, NULL, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 0, NULL, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 1, thetas, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 1, thetas, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 0, thetas, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 0, thetas, 0), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 1, NULL, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 1, NULL, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 0, NULL, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 0, NULL, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 1, thetas, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 1, thetas, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(NULL, 0, thetas, 2), RES_BAD_ARG); - CHECK(INV_CUMULATIVE(estimator, 0, thetas, 2), RES_OK); - CHECK(eq_eps(thetas[0], 0, 1.e-6), 1); - CHECK(eq_eps(thetas[1], PI, 1.e-6), 1); - CHECK(INV_CUMULATIVE(estimator, 0, thetas, sa_size(thetas)), RES_OK); + CHK(INV_CUMULATIVE(NULL, 1, NULL, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 1, NULL, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 0, NULL, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 0, NULL, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 1, thetas, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 1, thetas, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 0, thetas, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 0, thetas, 0) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 1, NULL, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 1, NULL, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 0, NULL, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 0, NULL, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 1, thetas, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 1, thetas, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(NULL, 0, thetas, 2) == RES_BAD_ARG); + CHK(INV_CUMULATIVE(estimator, 0, thetas, 2) == RES_OK); + CHK(eq_eps(thetas[0], 0, 1.e-6) == 1); + CHK(eq_eps(thetas[1], PI, 1.e-6) == 1); + CHK(INV_CUMULATIVE(estimator, 0, thetas, sa_size(thetas)) == RES_OK); #undef INV_CUMULATIVE printf("\n# Inverse cumulative phase function\n"); @@ -2848,20 +2848,20 @@ main(int argc, char** argv) error = fabs(thetas[i] - inverse_cumulative[i]) / inverse_cumulative[i]; printf("CDF^-1(%9.3g) = %9.3g ~ %9.3g; err = %.3f%%\n", (double)i*(1.0/1999.0), thetas[i], inverse_cumulative[i], error*100); - CHECK(interval[0] <= interval[1], 1); + CHK(interval[0] <= interval[1]); } sa_release(thetas); - CHECK(sschiff_estimator_ref_put(estimator), RES_OK); - CHECK(sschiff_device_ref_put(dev), RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(sschiff_estimator_ref_put(estimator) == RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); - CHECK(s3d_device_ref_put(s3d), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_device_ref_put(s3d) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); geometry_release(&geometry); 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_sschiff_estimator_sphere.c b/src/test_sschiff_estimator_sphere.c @@ -49,9 +49,9 @@ get_material_property { struct sampler_context* ctx = mtl; - NCHECK(mtl, NULL); - NCHECK(properties, NULL); - CHECK(eq_eps(ctx->wavelength, wavelength, 1.e-8), 1); + CHK(mtl != NULL); + CHK(properties != NULL); + CHK(eq_eps(ctx->wavelength, wavelength, 1.e-8) == 1); properties->medium_refractive_index = ctx->medium_refractive_index; properties->relative_real_refractive_index = @@ -70,8 +70,8 @@ sample_sphere struct sampler_context* sampler_ctx = sampler_context; struct sphere sphere; - NCHECK(rng, NULL); - NCHECK(volume_scaling, NULL); + CHK(rng != NULL); + CHK(volume_scaling != NULL); sphere.geometry = &sampler_ctx->geometry; sphere.radius = (float)ssp_ran_lognormal @@ -101,9 +101,9 @@ check_schiff_estimation const size_t ndirs = 100; const double wavelength = sampler_ctx->wavelength; - NCHECK(sampler_ctx, NULL); - NCHECK(results, NULL); - NCHECK(results, 0); + CHK(sampler_ctx != NULL); + CHK(results != NULL); + CHK(results != 0); distrib.material.get_property = get_material_property; distrib.material.material = sampler_ctx; @@ -124,37 +124,38 @@ check_schiff_estimation distrib.characteristic_length = sampler_ctx->mean_radius * 2.0; time_current(&t0); - CHECK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, - sschiff_uniform_scattering_angles, nscatt_angles, ngeoms, ndirs, 0, &estimator), RES_OK); + CHK(sschiff_integrate(dev, rng, &distrib, &wavelength, 1, + sschiff_uniform_scattering_angles, nscatt_angles, ngeoms, ndirs, 0, &estimator) + == RES_OK); time_current(&t1); time_sub(&t0, &t1, &t0); time_dump(&t0, TIME_MIN|TIME_SEC|TIME_MSEC, NULL, buf, sizeof(buf)); printf("%d - mean radius: %5.2f micron - %s: \n", (int)i, results[i].mean_radius, buf); - CHECK(sschiff_estimator_get_cross_sections(estimator, &cross_section), RES_OK); + CHK(sschiff_estimator_get_cross_sections(estimator, &cross_section) == RES_OK); val = &cross_section.extinction; dst = val->E - results[i].extinction_cross_section; printf(" Extinction cross section = %7.2f ~ %12.7f +/- %12.7f (%6.2f)\n", results[i].extinction_cross_section, val->E, val->SE, dst / val->SE); - CHECK(eq_eps(val->E, results[i].extinction_cross_section, 4*val->SE), 1); + CHK(eq_eps(val->E, results[i].extinction_cross_section, 4*val->SE) == 1); val = &cross_section.absorption; dst = val->E - results[i].absorption_cross_section; printf(" Absorption cross section = %7.2f ~ %12.7f +/- %12.7f (%6.2f)\n", results[i].absorption_cross_section, val->E, val->SE, dst / val->SE); - CHECK(eq_eps(val->E, results[i].absorption_cross_section, 4*val->SE), 1); + CHK(eq_eps(val->E, results[i].absorption_cross_section, 4*val->SE) == 1); val = &cross_section.scattering; dst = val->E - results[i].scattering_cross_section; printf(" Scattering cross section = %7.2f ~ %12.7f +/- %12.7f (%6.2f)\n", results[i].scattering_cross_section, val->E, val->SE, dst / val->SE); - CHECK(eq_eps(val->E, results[i].scattering_cross_section, 4*val->SE), 1); + CHK(eq_eps(val->E, results[i].scattering_cross_section, 4*val->SE) == 1); val = &cross_section.average_projected_area; printf(" Averavege projected area = %12.7g +/- %12.7g\n", val->E, val->SE); - CHECK(sschiff_estimator_ref_put(estimator), RES_OK); + CHK(sschiff_estimator_ref_put(estimator) == RES_OK); } } @@ -200,9 +201,9 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); - CHECK(sschiff_device_create - (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, NULL, &dev), RES_OK); + CHK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng) == RES_OK); + CHK(sschiff_device_create + (NULL, &allocator, SSCHIFF_NTHREADS_DEFAULT, 1, NULL, &dev) == RES_OK); geometry_init_sphere(&sampler_ctx.geometry, 64); @@ -219,128 +220,130 @@ main(int argc, char** argv) distrib.sample = sample_sphere; distrib.context = &sampler_ctx; - CHECK(sschiff_integrate(NULL, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(NULL, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, - sschiff_uniform_scattering_angles, 1, 1, 1, 0, &estimator), RES_BAD_ARG); - CHECK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, - sschiff_uniform_scattering_angles, 10, 1000, 1, 0, &estimator), RES_OK); - - CHECK(sschiff_estimator_get_wavelengths(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_wavelengths(estimator, NULL, NULL), RES_OK);/*Useless*/ - CHECK(sschiff_estimator_get_wavelengths(NULL, NULL, &count), RES_BAD_ARG); - CHECK(sschiff_estimator_get_wavelengths(estimator, NULL, &count), RES_OK); - CHECK(count, 1); - CHECK(sschiff_estimator_get_wavelengths(NULL, &dbls, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_wavelengths(estimator, &dbls, NULL), RES_OK); - CHECK(dbls[0], wlen); - CHECK(sschiff_estimator_get_wavelengths(NULL, &dbls, &count), RES_BAD_ARG); - CHECK(sschiff_estimator_get_wavelengths(estimator, &dbls, &count), RES_OK); - CHECK(dbls[0], wlen); - CHECK(count, 1); - - CHECK(sschiff_estimator_get_scattering_angles(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_scattering_angles(estimator, NULL, NULL), RES_OK); /* Useless */ - CHECK(sschiff_estimator_get_scattering_angles(NULL, NULL, &count), RES_BAD_ARG); - CHECK(sschiff_estimator_get_scattering_angles(estimator, NULL, &count), RES_OK); - CHECK(count, 10); - CHECK(sschiff_estimator_get_scattering_angles(NULL, &dbls, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_scattering_angles(estimator, &dbls, NULL), RES_OK); /* Useless */ + CHK(sschiff_integrate(NULL, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, NULL, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 0, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, NULL, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, NULL, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, NULL, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(NULL, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, NULL, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, + sschiff_uniform_scattering_angles, 1, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, + sschiff_uniform_scattering_angles, 2, 1, 1, 0, &estimator) == RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, &wlen, 1, + sschiff_uniform_scattering_angles, 10, 1000, 1, 0, &estimator) == RES_OK); + + CHK(sschiff_estimator_get_wavelengths(NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_wavelengths(estimator, NULL, NULL) == RES_OK);/*Useless*/ + CHK(sschiff_estimator_get_wavelengths(NULL, NULL, &count) == RES_BAD_ARG); + CHK(sschiff_estimator_get_wavelengths(estimator, NULL, &count) == RES_OK); + CHK(count == 1); + CHK(sschiff_estimator_get_wavelengths(NULL, &dbls, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_wavelengths(estimator, &dbls, NULL) == RES_OK); + CHK(dbls[0] == wlen); + CHK(sschiff_estimator_get_wavelengths(NULL, &dbls, &count) == RES_BAD_ARG); + CHK(sschiff_estimator_get_wavelengths(estimator, &dbls, &count) == RES_OK); + CHK(dbls[0] == wlen); + CHK(count == 1); + + CHK(sschiff_estimator_get_scattering_angles(NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_scattering_angles(estimator, NULL, NULL) == RES_OK); /* Useless */ + CHK(sschiff_estimator_get_scattering_angles(NULL, NULL, &count) == RES_BAD_ARG); + CHK(sschiff_estimator_get_scattering_angles(estimator, NULL, &count) == RES_OK); + CHK(count == 10); + CHK(sschiff_estimator_get_scattering_angles(NULL, &dbls, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_scattering_angles(estimator, &dbls, NULL) == RES_OK); /* Useless */ FOR_EACH(i, 0, count) - CHECK(eq_eps(dbls[i], (double)i*PI/((double)count-1), 1.e-6), 1); - CHECK(sschiff_estimator_get_scattering_angles(NULL, &dbls, &count), RES_BAD_ARG); - CHECK(sschiff_estimator_get_scattering_angles(estimator, &dbls, &count), RES_OK); + CHK(eq_eps(dbls[i], (double)i*PI/((double)count-1), 1.e-6) == 1); + CHK(sschiff_estimator_get_scattering_angles(NULL, &dbls, &count) == RES_BAD_ARG); + CHK(sschiff_estimator_get_scattering_angles(estimator, &dbls, &count) == RES_OK); FOR_EACH(i, 0, count) - CHECK(eq_eps(dbls[i], (double)i*PI/((double)count-1), 1.e-6), 1); - CHECK(count, 10); - - CHECK(sschiff_estimator_get_realisations_count(NULL, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_realisations_count(estimator, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_realisations_count(NULL, &count), RES_BAD_ARG); - CHECK(sschiff_estimator_get_realisations_count(estimator, &count), RES_OK); - CHECK(count, 1000); - - CHECK(sschiff_estimator_get_cross_section(NULL, 1, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(estimator, 1, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(NULL, 1, &cross_section), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(estimator, 1, &cross_section), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(NULL, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(estimator, 0, NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(NULL, 0, &cross_section), RES_BAD_ARG); - CHECK(sschiff_estimator_get_cross_section(estimator, 0, &cross_section), RES_OK); - - CHECK(sschiff_estimator_ref_get(NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_ref_get(estimator), RES_OK); - CHECK(sschiff_estimator_ref_put(NULL), RES_BAD_ARG); - CHECK(sschiff_estimator_ref_put(estimator), RES_OK); - CHECK(sschiff_estimator_ref_put(estimator), RES_OK); + CHK(eq_eps(dbls[i], (double)i*PI/((double)count-1), 1.e-6) == 1); + CHK(count == 10); + + CHK(sschiff_estimator_get_realisations_count(NULL, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_realisations_count(estimator, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_realisations_count(NULL, &count) == RES_BAD_ARG); + CHK(sschiff_estimator_get_realisations_count(estimator, &count) == RES_OK); + CHK(count == 1000); + + CHK(sschiff_estimator_get_cross_section(NULL, 1, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(estimator, 1, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(NULL, 1, &cross_section) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(estimator, 1, &cross_section) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(NULL, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(estimator, 0, NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(NULL, 0, &cross_section) == RES_BAD_ARG); + CHK(sschiff_estimator_get_cross_section(estimator, 0, &cross_section) == RES_OK); + + CHK(sschiff_estimator_ref_get(NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_ref_get(estimator) == RES_OK); + CHK(sschiff_estimator_ref_put(NULL) == RES_BAD_ARG); + CHK(sschiff_estimator_ref_put(estimator) == RES_OK); + CHK(sschiff_estimator_ref_put(estimator) == RES_OK); wlens[0] = 0.2, wlens[1] = 0.6, wlens[2] = 0.4; - CHECK(sschiff_integrate(dev, rng, &distrib, wlens, 3, - sschiff_uniform_scattering_angles, 10, 1000, 1, 0, &estimator), RES_BAD_ARG); + CHK(sschiff_integrate(dev, rng, &distrib, wlens, 3, + sschiff_uniform_scattering_angles, 10, 1000, 1, 0, &estimator) == RES_BAD_ARG); sampler_ctx.relative_real_refractive_index = 1.1; check_schiff_estimation(dev, rng, &sampler_ctx, results_n_r_1_1, @@ -351,13 +354,13 @@ main(int argc, char** argv) check_schiff_estimation(dev, rng, &sampler_ctx, results_n_r_1_01, sizeof(results_n_r_1_01)/sizeof(struct result)); - CHECK(sschiff_device_ref_put(dev), RES_OK); - CHECK(ssp_rng_ref_put(rng), RES_OK); + CHK(sschiff_device_ref_put(dev) == RES_OK); + CHK(ssp_rng_ref_put(rng) == RES_OK); geometry_release(&sampler_ctx.geometry); 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_sschiff_utils.h b/src/test_sschiff_utils.h @@ -43,8 +43,8 @@ geometry_init_sphere(struct geometry* sphere, const unsigned ntheta) double* sin_phi = NULL; unsigned itheta, iphi; - NCHECK(sphere, NULL); - NCHECK(ntheta, 0); + CHK(sphere != NULL); + CHK(ntheta != 0); sphere->vertices = NULL; sphere->indices = NULL; @@ -117,8 +117,8 @@ geometry_init_cylinder(struct geometry* geometry, const unsigned nsteps) const double step = 2*PI / (double)nsteps; unsigned istep; - NCHECK(geometry, NULL); - NCHECK(nsteps, 0); + CHK(geometry != NULL); + CHK(nsteps != 0); geometry->vertices = NULL; geometry->indices = NULL; @@ -173,7 +173,7 @@ geometry_init_cylinder(struct geometry* geometry, const unsigned nsteps) static INLINE void geometry_release(struct geometry* geometry) { - NCHECK(geometry, NULL); + CHK(geometry != NULL); sa_release(geometry->vertices); sa_release(geometry->indices); geometry->vertices = NULL; @@ -184,11 +184,11 @@ static INLINE void geometry_dump(struct geometry* geom, FILE* file) { size_t i; - NCHECK(geom, NULL); - NCHECK(file, NULL); + CHK(geom != NULL); + CHK(file != NULL); - CHECK(sa_size(geom->vertices)%3, 0); /* Ensure 3D position */ - CHECK(sa_size(geom->indices)%3, 0); /* Ensure triangular primitives */ + CHK(sa_size(geom->vertices)%3 == 0); /* Ensure 3D position */ + CHK(sa_size(geom->indices)%3 == 0); /* Ensure triangular primitives */ FOR_EACH(i, 0, sa_size(geom->vertices)/3) { fprintf(file, "v %f %f %f\n", @@ -219,8 +219,8 @@ cylinder_get_indices(const unsigned itri, unsigned ids[3], void* ctx) struct cylinder* cylinder = ctx; const size_t i = itri * 3; - CHECK(sa_size(cylinder->geometry->indices) % 3, 0); - CHECK(itri < sa_size(cylinder->geometry->indices) / 3, 1); + CHK(sa_size(cylinder->geometry->indices) % 3 == 0); + CHK(itri < sa_size(cylinder->geometry->indices) / 3); ids[0] = cylinder->geometry->indices[i + 0]; ids[1] = cylinder->geometry->indices[i + 1]; ids[2] = cylinder->geometry->indices[i + 2]; @@ -232,8 +232,8 @@ cylinder_get_position(const unsigned ivert, float vertex[3], void* ctx) struct cylinder* cylinder = ctx; const size_t i = ivert * 3; - CHECK(sa_size(cylinder->geometry->vertices) % 3, 0); - CHECK(ivert < sa_size(cylinder->geometry->vertices) / 3, 1); + CHK(sa_size(cylinder->geometry->vertices) % 3 == 0); + CHK(ivert < sa_size(cylinder->geometry->vertices) / 3); vertex[0] = cylinder->geometry->vertices[i + 0] * cylinder->radius; vertex[1] = cylinder->geometry->vertices[i + 1] * cylinder->radius; vertex[2] = cylinder->geometry->vertices[i + 2] * cylinder->height; @@ -245,8 +245,8 @@ cylinder_setup_s3d_shape(struct cylinder* cylinder, struct s3d_shape* shape) struct s3d_vertex_data attrib; size_t nverts, nprims; - NCHECK(cylinder, NULL); - NCHECK(shape, NULL); + CHK(cylinder != NULL); + CHK(shape != NULL); attrib.usage = S3D_POSITION; attrib.type = S3D_FLOAT3; @@ -273,8 +273,8 @@ sphere_get_indices(const unsigned itri, unsigned ids[3], void* ctx) struct sphere* sphere = ctx; const size_t i = itri * 3; - CHECK(sa_size(sphere->geometry->indices) % 3, 0); - CHECK(itri < sa_size(sphere->geometry->indices) / 3, 1); + CHK(sa_size(sphere->geometry->indices) % 3 == 0); + CHK(itri < sa_size(sphere->geometry->indices) / 3); ids[0] = sphere->geometry->indices[i + 0]; ids[1] = sphere->geometry->indices[i + 1]; ids[2] = sphere->geometry->indices[i + 2]; @@ -286,8 +286,8 @@ sphere_get_position(const unsigned ivert, float vertex[3], void* ctx) struct sphere* sphere = ctx; const size_t i = ivert * 3; - CHECK(sa_size(sphere->geometry->vertices) % 3, 0); - CHECK(ivert < sa_size(sphere->geometry->vertices) / 3, 1); + CHK(sa_size(sphere->geometry->vertices) % 3 == 0); + CHK(ivert < sa_size(sphere->geometry->vertices) / 3); vertex[0] = sphere->geometry->vertices[i + 0] * sphere->radius; vertex[1] = sphere->geometry->vertices[i + 1] * sphere->radius; vertex[2] = sphere->geometry->vertices[i + 2] * sphere->radius; @@ -299,8 +299,8 @@ sphere_setup_s3d_shape(struct sphere* sphere, struct s3d_shape* shape) struct s3d_vertex_data attrib; size_t nverts, nprims; - NCHECK(sphere, NULL); - NCHECK(shape, NULL); + CHK(sphere != NULL); + CHK(shape != NULL); attrib.usage = S3D_POSITION; attrib.type = S3D_FLOAT3; @@ -324,7 +324,7 @@ compute_estimation_intersection const struct sschiff_state* state1) { double interval0[2], interval1[2]; - CHECK(scale > 0, 1); + CHK(scale > 0); interval0[0] = state0->E - scale*state0->SE; interval0[1] = state0->E + scale*state0->SE; interval1[0] = state1->E - scale*state1->SE;