1#include <stdlib.h>
2#include <inttypes.h>
3
4uint64_t __rand48_step(unsigned short *xi, unsigned short *lc);
5extern unsigned short __seed48[7];
6
7double erand48(unsigned short s[3])
8{
9	union {
10		uint64_t u;
11		double f;
12	} x = { 0x3ff0000000000000ULL | __rand48_step(s, __seed48+3)<<4 };
13	return x.f - 1.0;
14}
15
16double drand48(void)
17{
18	return erand48(__seed48);
19}
20