tfprng: expose range formula in form of macros to build custom range generators.
authorAndrey Rys <rys@lynxlynx.ru>
Wed, 10 Apr 2019 05:27:30 +0000 (12:27 +0700)
committerAndrey Rys <rys@lynxlynx.ru>
Wed, 10 Apr 2019 05:27:30 +0000 (12:27 +0700)
VERSION
tfprng.c
tfprng.h

diff --git a/VERSION b/VERSION
index 6f4247a6255c99f420d1df558d68745592862ff7..f64f5d8d85ac0230d36724bd7e6ba351a95b4942 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-26
+27
index d4370f31172d0093f487ca07395a85a7286a317d..4db2418964ab44ad7036221b4105c12c69478fb1 100644 (file)
--- a/tfprng.c
+++ b/tfprng.c
@@ -85,7 +85,7 @@ TF_UNIT_TYPE tf_prng_range_r(void *sdata, TF_UNIT_TYPE s, TF_UNIT_TYPE d)
 {
        TF_UNIT_TYPE c = tf_prng_random_r(sdata);
        if (d <= s) return s;
-       return s + c / ((TF_UNIT_TYPE)~0 / (d - s + 1) + 1);
+       return TF_PRNG_RANGE(c, TF_UNIT_TYPE, s, d);
 }
 
 TF_UNIT_TYPE tf_prng_range(TF_UNIT_TYPE s, TF_UNIT_TYPE d)
index 5fbab0ae30dc16b04332b24b83e5948ec68c2d79..3fab0a20fe51c1f879d2f51c1b61d4dfe1acc11a 100644 (file)
--- a/tfprng.h
+++ b/tfprng.h
@@ -6,6 +6,7 @@
 
 #define TF_PRNG_KEY_SIZE TF_KEY_SIZE
 #define TF_PRNG_SIZE_UNIT TF_SIZE_UNIT
+#define TF_PRNG_RANGE(C, T, S, D) (S + C / ((T)~0 / (D - S + 1) + 1))
 
 size_t tf_prng_datasize(void);
 void tf_prng_seedkey_r(void *sdata, const void *skey);