NEURON
isaac64.cpp File Reference
#include <../../nrnconf.h>
#include "isaac64.h"

Go to the source code of this file.

Macros

#define ind(mm, x)   (*(ub8*) ((ub1*) (mm) + ((x) & ((RANDSIZ - 1) << 3))))
 
#define rngstep(mix, a, b, mm, m, m2, r, x)
 
#define mix(a, b, c, d, e, f, g, h)
 

Functions

void isaac64_generate (struct isaac64_state *rng)
 
void isaac64_init (struct isaac64_state *rng, ub4 seed)
 

Macro Definition Documentation

◆ ind

#define ind (   mm,
 
)    (*(ub8*) ((ub1*) (mm) + ((x) & ((RANDSIZ - 1) << 3))))

Definition at line 18 of file isaac64.cpp.

◆ mix

#define mix (   a,
  b,
  c,
  d,
  e,
  f,
  g,
 
)
Value:
{ \
a -= e; \
f ^= h >> 9; \
h += a; \
b -= f; \
g ^= a << 9; \
a += b; \
c -= g; \
h ^= b >> 23; \
b += c; \
d -= h; \
a ^= c << 15; \
c += d; \
e -= a; \
b ^= d >> 14; \
d += e; \
f -= b; \
c ^= e << 20; \
e += f; \
g -= c; \
d ^= f >> 17; \
f += g; \
h -= d; \
e ^= g << 14; \
g += h; \
}
#define c
#define g
Definition: passive0.cpp:21
#define e
Definition: passive0.cpp:22

Definition at line 28 of file isaac64.cpp.

◆ rngstep

#define rngstep (   mix,
  a,
  b,
  mm,
  m,
  m2,
  r,
 
)
Value:
{ \
x = *m; \
a = (mix) + *(m2++); \
*(m++) = y = ind(mm, x) + a + b; \
*(r++) = b = ind(mm, y >> RANDSIZL) + x; \
}
double mm
Definition: coord.h:49
#define ind(mm, x)
Definition: isaac64.cpp:18
#define mix(a, b, c, d, e, f, g, h)
Definition: isaac64.cpp:28
#define RANDSIZL
Definition: isaac64.h:23

Definition at line 20 of file isaac64.cpp.

Function Documentation

◆ isaac64_generate()

void isaac64_generate ( struct isaac64_state rng)

Definition at line 57 of file isaac64.cpp.

◆ isaac64_init()

void isaac64_init ( struct isaac64_state rng,
ub4  seed 
)

Definition at line 81 of file isaac64.cpp.