summaryrefslogtreecommitdiffhomepage
path: root/include/stc/crandom.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/stc/crandom.h')
-rw-r--r--include/stc/crandom.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/stc/crandom.h b/include/stc/crandom.h
index b46c0430..6c41be83 100644
--- a/include/stc/crandom.h
+++ b/include/stc/crandom.h
@@ -148,7 +148,7 @@ STC_DEF stc64_uniform_t stc64_uniform_new(int64_t low, int64_t high) {
#if defined(__SIZEOF_INT128__)
#define c_umul128(a, b, lo, hi) \
do { __uint128_t _z = (__uint128_t)(a)*(b); \
- *(lo) = (uint64_t)_z, *(hi) = _z >> 64; } while(0)
+ *(lo) = (uint64_t)_z, *(hi) = (uint64_t)(_z >> 64U); } while(0)
#elif defined(_MSC_VER) && defined(_WIN64)
#include <intrin.h>
#define c_umul128(a, b, lo, hi) ((void)(*(lo) = _umul128(a, b, hi)))
@@ -162,7 +162,7 @@ STC_DEF int64_t stc64_uniform(stc64_t* rng, stc64_uniform_t* d) {
#ifdef c_umul128
uint64_t lo, hi;
do { c_umul128(stc64_rand(rng), d->range, &lo, &hi); } while (lo < d->threshold);
- return d->lower + hi;
+ return d->lower + (int64_t)hi;
#else
uint64_t x, r;
do {