fix incorrect sequence generation in *rand48 prng functions
[oweals/musl.git] / src / prng / __rand48_step.c
1 #include <stdint.h>
2
3 uint64_t __rand48_step(unsigned short *xi, unsigned short *lc)
4 {
5         uint64_t a, x;
6         x = xi[0] | xi[1]+0U<<16 | xi[2]+0ULL<<32;
7         a = lc[0] | lc[1]+0U<<16 | lc[2]+0ULL<<32;
8         x = a*x + lc[3];
9         xi[0] = x;
10         xi[1] = x>>16;
11         xi[2] = x>>32;
12         return x & 0xffffffffffffull;
13 }