diff options
Diffstat (limited to 'include/stc/crandom.h')
| -rw-r--r-- | include/stc/crandom.h | 4 |
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 { |
