Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1ded86d

Browse files
MAINT: random: Add assert() statements.
Assert that an invalid value (2**n-1 for n = 8, 16, 32, 64) has not been passed to the Lemire function.
1 parent e8b8401 commit 1ded86d

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

numpy/random/src/distributions/distributions.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#include <intrin.h>
77
#endif
88

9+
#include <assert.h>
10+
911
/* Inline generators for internal use */
1012
static NPY_INLINE uint32_t next_uint32(bitgen_t *bitgen_state) {
1113
return bitgen_state->next_uint32(bitgen_state->state);
@@ -1149,6 +1151,8 @@ static NPY_INLINE uint64_t bounded_lemire_uint64(bitgen_t *bitgen_state,
11491151
*/
11501152
const uint64_t rng_excl = rng + 1;
11511153

1154+
assert(rng != 0xFFFFFFFFFFFFFFFFULL);
1155+
11521156
#if __SIZEOF_INT128__
11531157
/* 128-bit uint available (e.g. GCC/clang). `m` is the __uint128_t scaled
11541158
* integer. */
@@ -1239,6 +1243,8 @@ static NPY_INLINE uint32_t buffered_bounded_lemire_uint32(
12391243
uint64_t m;
12401244
uint32_t leftover;
12411245

1246+
assert(rng != 0xFFFFFFFFUL);
1247+
12421248
/* Generate a scaled random number. */
12431249
m = ((uint64_t)next_uint32(bitgen_state)) * rng_excl;
12441250

@@ -1273,6 +1279,8 @@ static NPY_INLINE uint16_t buffered_bounded_lemire_uint16(
12731279
uint32_t m;
12741280
uint16_t leftover;
12751281

1282+
assert(rng != 0xFFFFU);
1283+
12761284
/* Generate a scaled random number. */
12771285
m = ((uint32_t)buffered_uint16(bitgen_state, bcnt, buf)) * rng_excl;
12781286

@@ -1308,6 +1316,9 @@ static NPY_INLINE uint8_t buffered_bounded_lemire_uint8(bitgen_t *bitgen_state,
13081316
uint16_t m;
13091317
uint8_t leftover;
13101318

1319+
assert(rng != 0xFFU);
1320+
1321+
13111322
/* Generate a scaled random number. */
13121323
m = ((uint16_t)buffered_uint8(bitgen_state, bcnt, buf)) * rng_excl;
13131324

0 commit comments

Comments
 (0)