20 #define LRAND48_MAX (2147483648) 22 #define RAND48_SEED_0 (0x330e) 23 #define RAND48_SEED_1 (0xabcd) 24 #define RAND48_SEED_2 (0x1234) 25 #define RAND48_MULT_0 (0xe66d) 26 #define RAND48_MULT_1 (0xdeec) 27 #define RAND48_MULT_2 (0x0005) 28 #define RAND48_ADD (0x000b) 31 unsigned short _rand48_seed[3] = {
37 unsigned short _rand48_mult[3] = {
43 unsigned short _rand48_add = RAND48_ADD;
46 _dorand48 (
unsigned short xseed[3])
49 unsigned short temp[2];
51 accu = (
unsigned long) _rand48_mult[0] * (
unsigned long) xseed[0] + (
unsigned long) _rand48_add;
52 temp[0] = (
unsigned short) accu;
53 accu >>=
sizeof (
unsigned short) * 8;
55 (
unsigned long) _rand48_mult[0] * (
unsigned long) xseed[1] +
56 (
unsigned long) _rand48_mult[1] * (
unsigned long) xseed[0];
57 temp[1] = (
unsigned short) accu;
58 accu >>=
sizeof (
unsigned short) * 8;
59 accu += _rand48_mult[0] * xseed[2] + _rand48_mult[1] * xseed[1] + _rand48_mult[2] * xseed[0];
62 xseed[2] = (
unsigned short) accu;
68 _dorand48 (_rand48_seed);
69 return ((
long) _rand48_seed[2] << 15) + ((long) _rand48_seed[1] >> 1);
75 _rand48_seed[0] = RAND48_SEED_0;
76 _rand48_seed[1] = (
unsigned short) seed;
77 _rand48_seed[2] = (
unsigned short) (seed >> 16);
78 _rand48_mult[0] = RAND48_MULT_0;
79 _rand48_mult[1] = RAND48_MULT_1;
80 _rand48_mult[2] = RAND48_MULT_2;
81 _rand48_add = RAND48_ADD;
89 return (
double) ((double) lrand48 () / (double) LRAND48_MAX);
93 srand48_r (
long int seed,
struct drand48_data *buffer)
95 buffer->_rand48_seed[0] = RAND48_SEED_0;
96 buffer->_rand48_seed[1] = (
unsigned short) seed;
97 buffer->_rand48_seed[2] = (
unsigned short) (seed >> 16);
102 lrand48_r (
struct drand48_data *buffer,
long int *result)
104 _dorand48 (buffer->_rand48_seed);
107 *result = ((long) buffer->_rand48_seed[2] << 15) + ((long) buffer->_rand48_seed[1] >> 1);
113 drand48_r (
struct drand48_data *buffer,
double *result)
116 lrand48_r (buffer, &r);
119 *result = (double) ((
double) r / (double) LRAND48_MAX);
125 rand_r (
unsigned int *seedp)
128 if (rand_s (&ret) == 0)