github.com/afumu/libc@v0.0.6/musl/src/prng/__rand48_step.c (about)

     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  }