star-mc

Parallel estimation of Monte Carlo integrators
git clone git://git.meso-star.fr/star-mc.git
Log | Files | Refs | README | LICENSE

commit 41003e0912f6baf80ab1d32bb0a968c0891990d6
parent fe83d96a6d11d758dd3522c9db1f8174cf87047a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 27 Oct 2015 16:28:19 +0100

Add and test the smc_device_get_rng_type function

Retrieve the type of the RNG used by the Star Monte Carlo device.

Diffstat:
Msrc/smc.h | 5+++++
Msrc/smc_device.c | 7+++++++
Msrc/test_smc_device.c | 11+++++++++++
3 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/smc.h b/src/smc.h @@ -156,6 +156,11 @@ smc_device_set_rng_type (struct smc_device* dev, const struct ssp_rng_type* type); +SMC_API res_T +smc_device_get_rng_type + (struct smc_device* dev, + struct ssp_rng_type* type); + /******************************************************************************* * Integration API ******************************************************************************/ diff --git a/src/smc_device.c b/src/smc_device.c @@ -187,3 +187,10 @@ error: goto exit; } +res_T +smc_device_get_rng_type(struct smc_device* dev, struct ssp_rng_type* type) +{ + if(!dev || !type) return RES_BAD_ARG; + return ssp_rng_proxy_get_type(dev->rng_proxy, type); +} + diff --git a/src/test_smc_device.c b/src/test_smc_device.c @@ -46,6 +46,7 @@ main(int argc, char** argv) { struct logger logger; struct mem_allocator allocator; + struct ssp_rng_type type; struct smc_device* dev; (void)argc, (void)argv; @@ -84,7 +85,17 @@ main(int argc, char** argv) CHECK(smc_device_set_rng_type(dev, NULL), RES_BAD_ARG); CHECK(smc_device_set_rng_type(NULL, &ssp_rng_ranlux48), RES_BAD_ARG); CHECK(smc_device_set_rng_type(dev, &ssp_rng_ranlux48), RES_OK); + + CHECK(smc_device_get_rng_type(NULL, NULL), RES_BAD_ARG); + CHECK(smc_device_get_rng_type(dev, NULL), RES_BAD_ARG); + CHECK(smc_device_get_rng_type(NULL, &type), RES_BAD_ARG); + CHECK(smc_device_get_rng_type(dev, &type), RES_OK); + CHECK(ssp_rng_type_eq(&type, &ssp_rng_ranlux48), 1); + CHECK(smc_device_set_rng_type(dev, &ssp_rng_kiss), RES_OK); + CHECK(smc_device_get_rng_type(dev, &type), RES_OK); + CHECK(ssp_rng_type_eq(&type, &ssp_rng_kiss), 1); + CHECK(smc_device_ref_put(dev), RES_OK); CHECK(smc_device_create(&logger, &allocator, 4, &ssp_rng_ranlux48, &dev), RES_OK);