From b1914203bce691a4038516d7e4aa0afd4c05bb71 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 24 Feb 2024 23:44:57 -0300 Subject: [PATCH] add slightly custom mixture example --- .../15_time_to_botec_custom_mixture/example | Bin 0 -> 27536 bytes .../15_time_to_botec_custom_mixture/example.c | 34 ++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 examples/more/15_time_to_botec_custom_mixture/example create mode 100644 examples/more/15_time_to_botec_custom_mixture/example.c diff --git a/examples/more/15_time_to_botec_custom_mixture/example b/examples/more/15_time_to_botec_custom_mixture/example new file mode 100755 index 0000000000000000000000000000000000000000..de627d4e907465d7dac0be3e9642db29dd1247a2 GIT binary patch literal 27536 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 literal 0 HcmV?d00001 diff --git a/examples/more/15_time_to_botec_custom_mixture/example.c b/examples/more/15_time_to_botec_custom_mixture/example.c new file mode 100644 index 0000000..47577f8 --- /dev/null +++ b/examples/more/15_time_to_botec_custom_mixture/example.c @@ -0,0 +1,34 @@ +#include "../../../squiggle.h" +#include "../../../squiggle_more.h" +#include +#include + +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); +}