From a9655bd6912486f3aa601da4b6f6d77f4e6f45de Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Sat, 15 Oct 2016 11:00:02 +0200 Subject: use uint64_t for compatability with windows --- src/syncrng.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'src/syncrng.c') diff --git a/src/syncrng.c b/src/syncrng.c index ed8ea53..6eb542a 100644 --- a/src/syncrng.c +++ b/src/syncrng.c @@ -1,9 +1,11 @@ #ifdef TARGETPYTHON +#include #include "Python.h" #endif #ifndef TARGETPYTHON #define STRICT_R_HEADERS +#include #include #include #include @@ -34,9 +36,9 @@ * * @return a generated random number */ -unsigned long lfsr113(unsigned long **state) +uint64_t lfsr113(uint64_t **state) { - unsigned long z1, z2, z3, z4, b; + uint64_t z1, z2, z3, z4, b; z1 = (*state)[0]; z2 = (*state)[1]; @@ -63,7 +65,7 @@ unsigned long lfsr113(unsigned long **state) (*state)[3] = z4; b = b & 0xFFFFFFFF; - + return(b); } @@ -78,9 +80,9 @@ unsigned long lfsr113(unsigned long **state) * @param[in] seed user supplied seed value for the RNG * @param[out] state state of the RNG */ -void lfsr113_seed(unsigned long seed, unsigned long **state) +void lfsr113_seed(uint64_t seed, uint64_t **state) { - unsigned long z1 = 2, + uint64_t z1 = 2, z2 = 8, z3 = 16, z4 = 128; @@ -96,7 +98,7 @@ void lfsr113_seed(unsigned long seed, unsigned long **state) z4 = (z4 > 127) ? z4 : z4 + 127; if (*state == NULL) { - (*state) = malloc(sizeof(unsigned long)*4); + (*state) = malloc(sizeof(uint64_t)*4); } (*state)[0] = z1; @@ -114,7 +116,7 @@ void lfsr113_seed(unsigned long seed, unsigned long **state) static PyObject *syncrng_seed(PyObject *self, PyObject *args) { - unsigned long seed, *state = NULL; + uint64_t seed, *state = NULL; if (!PyArg_ParseTuple(args, "k", &seed)) return NULL; @@ -129,7 +131,7 @@ static PyObject *syncrng_seed(PyObject *self, PyObject *args) static PyObject *syncrng_rand(PyObject *self, PyObject *args) { - unsigned long i, value, numints, *localstate; + uint64_t i, value, numints, *localstate; PyObject *listObj; PyObject *intObj; @@ -138,15 +140,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(unsigned long)*5); + localstate = malloc(sizeof(uint64_t)*5); numints = PyList_Size(listObj); for (i=0; i