xref: /aosp_15_r20/external/musl/src/prng/__rand48_step.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <stdint.h>
2*c9945492SAndroid Build Coastguard Worker #include "rand48.h"
3*c9945492SAndroid Build Coastguard Worker 
__rand48_step(unsigned short * xi,unsigned short * lc)4*c9945492SAndroid Build Coastguard Worker uint64_t __rand48_step(unsigned short *xi, unsigned short *lc)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker 	uint64_t a, x;
7*c9945492SAndroid Build Coastguard Worker 	x = xi[0] | xi[1]+0U<<16 | xi[2]+0ULL<<32;
8*c9945492SAndroid Build Coastguard Worker 	a = lc[0] | lc[1]+0U<<16 | lc[2]+0ULL<<32;
9*c9945492SAndroid Build Coastguard Worker 	x = a*x + lc[3];
10*c9945492SAndroid Build Coastguard Worker 	xi[0] = x;
11*c9945492SAndroid Build Coastguard Worker 	xi[1] = x>>16;
12*c9945492SAndroid Build Coastguard Worker 	xi[2] = x>>32;
13*c9945492SAndroid Build Coastguard Worker 	return x & 0xffffffffffffull;
14*c9945492SAndroid Build Coastguard Worker }
15