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 g
Definition: passive0.cpp:23
#define e
Definition: passive0.cpp:24
#define c

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; \
}
#define RANDSIZL
Definition: isaac64.h:23
#define ind(mm, x)
Definition: isaac64.cpp:18
double mm
#define mix(a, b, c, d, e, f, g, h)
Definition: isaac64.cpp:28

Definition at line 20 of file isaac64.cpp.

Function Documentation

◆ isaac64_generate()

void isaac64_generate ( struct isaac64_state rng)

Definition at line 42 of file isaac64.cpp.

◆ isaac64_init()

void isaac64_init ( struct isaac64_state rng,
ub4  seed 
)

Definition at line 67 of file isaac64.cpp.