squiggle.c

Self-contained Monte Carlo estimation in C99
Log | Files | Refs | README

commit b1914203bce691a4038516d7e4aa0afd4c05bb71
parent 774d54ed817d1bdc32028a9e4ca1cab5a458ee4d
Author: NunoSempere <nuno.sempere@protonmail.com>
Date:   Sat, 24 Feb 2024 23:44:57 -0300

add slightly custom mixture example

Diffstat:
Aexamples/more/15_time_to_botec_custom_mixture/example | 0
Aexamples/more/15_time_to_botec_custom_mixture/example.c | 34++++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/examples/more/15_time_to_botec_custom_mixture/example b/examples/more/15_time_to_botec_custom_mixture/example Binary files differ. diff --git a/examples/more/15_time_to_botec_custom_mixture/example.c b/examples/more/15_time_to_botec_custom_mixture/example.c @@ -0,0 +1,34 @@ +#include "../../../squiggle.h" +#include "../../../squiggle_more.h" +#include <stdio.h> +#include <stdlib.h> + +double cumsum_p0 = 0.6; +double cumsum_p1 = 0.8; +double cumsum_p2 = 0.9; +double cumsum_p3 = 1.0; + +double sampler_result(uint64_t * seed) +{ + + double p = sample_uniform(0, 1, seed); + if(p< cumsum_p0){ + return 0; + } else if (p < cumsum_p1){ + return 1; + } else if (p < cumsum_p2){ + return sample_to(1,3, seed); + } else { + return sample_to(2, 10, seed); + } +} + +int main() +{ + + int n_samples = 1000 * 1000, n_threads = 16; + double* results = malloc((size_t)n_samples * sizeof(double)); + sampler_parallel(sampler_result, results, n_threads, n_samples); + printf("Avg: %f\n", array_sum(results, n_samples) / n_samples); + free(results); +}