From 8882660839bb2918b12f92b72ef0bbdd7ef91db4 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Fri, 15 Dec 2017 17:40:28 -0500 Subject: update master with python branch --- src/syncrng.c | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 118 insertions(+), 14 deletions(-) diff --git a/src/syncrng.c b/src/syncrng.c index 025b1ca..3cc77fa 100644 --- a/src/syncrng.c +++ b/src/syncrng.c @@ -10,6 +10,8 @@ #include #include #include +#include +#include #endif /** @@ -36,9 +38,10 @@ * * @return a generated random number */ -uint64_t lfsr113(uint64_t **state) +uint32_t lfsr113(uint64_t **state) { - uint64_t z1, z2, z3, z4, b; + uint64_t z1, z2, z3, z4; + uint64_t b; z1 = (*state)[0]; z2 = (*state)[1]; @@ -66,7 +69,7 @@ uint64_t lfsr113(uint64_t **state) b = b & 0xFFFFFFFF; - return(b); + return((uint32_t) b); } /** @@ -80,12 +83,12 @@ uint64_t lfsr113(uint64_t **state) * @param[in] seed user supplied seed value for the RNG * @param[out] state state of the RNG */ -void lfsr113_seed(uint64_t seed, uint64_t **state) +void lfsr113_seed(uint32_t seed, uint64_t **state) { uint64_t z1 = 2, - z2 = 8, - z3 = 16, - z4 = 128; + z2 = 8, + z3 = 16, + z4 = 128; z1 = (z1 * (seed + 1)); z2 = (z2 * (seed + 1)); @@ -116,7 +119,8 @@ void lfsr113_seed(uint64_t seed, uint64_t **state) static PyObject *syncrng_seed(PyObject *self, PyObject *args) { - uint64_t seed, *state = NULL; + uint32_t seed; + uint64_t *state = NULL; if (!PyArg_ParseTuple(args, "k", &seed)) return NULL; @@ -131,7 +135,8 @@ static PyObject *syncrng_seed(PyObject *self, PyObject *args) static PyObject *syncrng_rand(PyObject *self, PyObject *args) { - uint64_t i, value, numints, *localstate; + uint32_t i, value, numints; + uint64_t *localstate; PyObject *listObj; PyObject *intObj; @@ -140,15 +145,15 @@ static PyObject *syncrng_rand(PyObject *self, PyObject *args) return NULL; // we're just assuming you would never pass more than 4 values - localstate = malloc(sizeof(uint64_t)*5); + localstate = malloc(sizeof(uint32_t)*5); numints = PyList_Size(listObj); for (i=0; i 0.259/u + 0.35) + continue; + } while (z > -log(u)); + global_R_result_normal = x; + return &global_R_result_normal; +} + /* * * End of R code -- cgit v1.2.3