Skip to content

Commit a2f271b

Browse files
authored
Do bit shifting with 64 bit precision (#940)
1 parent 213a063 commit a2f271b

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/utils/rng.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,18 +182,18 @@ static uint64_t rand_digits(uint64_t n)
182182

183183
/* odd random number for low order digit */
184184
u = (rand_msws32_r(&s) % 8) * 2 + 1;
185-
v = (1<<u);
185+
v = (1L<<u);
186186

187187
/* get rest of digits */
188188
for (m=60,c=0;m>0;) {
189189
j = rand_msws32_r(&s); /* get 8 digit 32-bit random word */
190190
for (i=0;i<32;i+=4) {
191191
k = (j>>i) & 0xf; /* get a digit */
192-
if (k!=0 && (c & (1<<k)) == 0) { /* not 0 and not previous */
193-
c |= (1<<k);
192+
if (k!=0 && (c & (1L<<k)) == 0) { /* not 0 and not previous */
193+
c |= (1L<<k);
194194
u |= (k<<m); /* add digit to output */
195195
m -= 4;
196-
if (m==24 || m==28) c = (1<<k) | v;
196+
if (m==24 || m==28) c = (1L<<k) | v;
197197
if (m==0) break;
198198
}
199199
}

0 commit comments

Comments
 (0)