From 65a3fc67f26c8dc4a86041d0864a4bef3f1b9df6 Mon Sep 17 00:00:00 2001 From: Andrey Rys Date: Tue, 9 Apr 2019 18:14:17 +0700 Subject: [PATCH] tfprng: expose range formula in form of macros to build custom range generators. --- tfprng.c | 2 +- tfprng.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tfprng.c b/tfprng.c index 5022857..f83963c 100644 --- a/tfprng.c +++ b/tfprng.c @@ -85,7 +85,7 @@ TFNG_UNIT_TYPE tfng_prng_range_r(void *sdata, TFNG_UNIT_TYPE s, TFNG_UNIT_TYPE d { TFNG_UNIT_TYPE c = tfng_prng_random_r(sdata); if (d <= s) return s; - return s + c / ((TFNG_UNIT_TYPE)~0 / (d - s + 1) + 1); + return TFNG_PRNG_RANGE(c, TFNG_UNIT_TYPE, s, d); } TFNG_UNIT_TYPE tfng_prng_range(TFNG_UNIT_TYPE s, TFNG_UNIT_TYPE d) diff --git a/tfprng.h b/tfprng.h index f7d3b3f..15880b7 100644 --- a/tfprng.h +++ b/tfprng.h @@ -6,6 +6,7 @@ #define TFNG_PRNG_KEY_SIZE TFNG_KEY_SIZE #define TFNG_PRNG_SIZE_UNIT TFNG_SIZE_UNIT +#define TFNG_PRNG_RANGE(C, T, S, D) (S + C / ((T)~0 / (D - S + 1) + 1)) size_t tfng_prng_datasize(void); void tfng_prng_seedkey_r(void *sdata, const void *skey);