#include <stdint.h> | |
uint64_t __rand48_step(unsigned short *xi, unsigned short *lc) | |
{ | |
uint64_t a, x; | |
x = xi[0] | ((uint32_t)xi[1])<<16 | ((uint64_t)xi[2])<<32; | |
a = lc[0] | ((uint32_t)lc[1])<<16 | ((uint64_t)lc[2])<<32; | |
x = a*x + lc[3]; | |
xi[0] = x; | |
xi[1] = x>>16; | |
xi[2] = x>>32; | |
return x & 0xffffffffffffull; | |
} |