long jrand48(unsigned short xseed[3]) { _dorand48(xseed); return ((int32_t)(((uint32_t)xseed[2] << 16) | (uint32_t)xseed[1])); }
double erand48(unsigned short xseed[3]) { _dorand48(xseed); return ldexp((double) xseed[0], -48) + ldexp((double) xseed[1], -32) + ldexp((double) xseed[2], -16); }
long jrand48(unsigned short xseed[3]) { _dorand48(xseed); return ((long) xseed[2] << 16) + (long) xseed[1]; }
long mrand48(void) { _dorand48(_rand48_seed); return ((long) _rand48_seed[2] << 16) + (long) _rand48_seed[1]; }