__rand48_step.c 301 B

1234567891011121314
  1. #include <stdlib.h>
  2. #include <inttypes.h>
  3. uint64_t __rand48_step(unsigned short *xi, unsigned short *lc)
  4. {
  5. uint64_t a, x;
  6. x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32;
  7. a = lc[0] | lc[1]<<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. }