26 v1 = 2.0*
lcg61(seed)-1.0;
27 v2 = 2.0*
lcg61(seed)-1.0;
29 }
while (rsq >= 1.0 || rsq == 0.0);
31 return v2 * sqrt(-2.0*log(rsq)/rsq);
43 static const double convertToDouble = 1.0/UINT64_C(2305843009213693951);
45 *seed *= UINT64_C(437799614237992725);
46 *seed %= UINT64_C(2305843009213693951);
48 return *seed*convertToDouble;
65 uint64_t
mkSeed(uint32_t
id, uint32_t callSite)
67 uint32_t s1 =
id * UINT32_C(2654435761);
68 uint32_t s2 = (
id+callSite) * UINT32_C(2654435761);
70 uint64_t iSeed = (UINT64_C(0x100000000) * s1) + s2;
71 for (
unsigned jj=0; jj<10; ++jj)