52 return static_cast<double>(
lowindex);
61 for (
i = 0;
i <
n;
i++) {
76 uint32_t u,
v, w, m,
n;
84 u = ~((
v - w) * (
v + w));
86 m ^= (((u >> 16) | (u << 16)) ^ 0x4b0f3b58) + w *
v;
91 u = ~((
v - w) * (
v + w));
93 n ^= (((u >> 16) | (u << 16)) ^ 0xe874f0c3) + w *
v;
116 static const double SHIFT32 = 1.0 / 4294967296.0;
125 return ((
double) hi) *
SHIFT32;
constexpr auto range(T &&iterable)
uint32_t nrnRan4int(uint32_t *idx1, uint32_t idx2)
uint32_t mcell_iran4(uint32_t *high)
double nrnRan4dbl(uint32_t *idx1, uint32_t idx2)
double mcell_ran4a(uint32_t *high)
static const double SHIFT32
double mcell_ran4(uint32_t *high, double *x, unsigned int n, double range)
void mcell_ran4_init(uint32_t low)
int const size_t const size_t n