1 #include <stdint.h> 2 #include "rand48.h" 3 __rand48_step(unsigned short * xi,unsigned short * lc)4uint64_t __rand48_step(unsigned short *xi, unsigned short *lc) 5 { 6 uint64_t a, x; 7 x = xi[0] | xi[1]+0U<<16 | xi[2]+0ULL<<32; 8 a = lc[0] | lc[1]+0U<<16 | lc[2]+0ULL<<32; 9 x = a*x + lc[3]; 10 xi[0] = x; 11 xi[1] = x>>16; 12 xi[2] = x>>32; 13 return x & 0xffffffffffffull; 14 } 15