__rand48_step.c raw

   1  #include <stdint.h>
   2  #include "rand48.h"
   3  
   4  uint64_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