NEURON
isaac64.h File Reference
#include <nrnconf.h>

Go to the source code of this file.

Classes

struct  isaac64_state
 

Macros

#define RANDSIZL   (4) /* I recommend 8 for crypto, 4 for simulations */
 
#define RANDSIZ   (1 << RANDSIZL)
 
#define RANDMAX   (2 * RANDSIZ)
 
#define DBL32   (2.3283064365386962890625e-10)
 
#define DBL53   (1.1102230246251565404236316680908203125e-16)
 
#define DBL64   (5.42101086242752217003726400434970855712890625e-20)
 
#define MSK53   0x001FFFFFFFFFFFFFLL
 
#define isaac64_uint32(rng)
 
#define isaac64_uint64(rng)
 
#define isaac64_dbl32(rng)
 
#define isaac64_dbl53(rng)
 
#define isaac64_dbl64(rng)
 

Typedefs

typedef unsigned long long ub8
 
typedef unsigned int ub4
 
typedef unsigned short int ub2
 
typedef unsigned char ub1
 

Functions

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

Macro Definition Documentation

◆ DBL32

#define DBL32   (2.3283064365386962890625e-10)

Definition at line 36 of file isaac64.h.

◆ DBL53

#define DBL53   (1.1102230246251565404236316680908203125e-16)

Definition at line 37 of file isaac64.h.

◆ DBL64

#define DBL64   (5.42101086242752217003726400434970855712890625e-20)

Definition at line 38 of file isaac64.h.

◆ isaac64_dbl32

#define isaac64_dbl32 (   rng)
Value:
(rng->randcnt > 0 ? (DBL32 * (*(((ub4*) (rng->randrsl)) + (rng->randcnt -= 1)))) \
: (isaac64_generate(rng), \
rng->randcnt = RANDMAX - 1, \
DBL32 * (*(((ub4*) (rng->randrsl)) + rng->randcnt))))
void isaac64_generate(struct isaac64_state *rng)
Definition: isaac64.cpp:57
#define RANDMAX
Definition: isaac64.h:25
#define DBL32
Definition: isaac64.h:36
unsigned int ub4
Definition: isaac64.h:31

Definition at line 73 of file isaac64.h.

◆ isaac64_dbl53

#define isaac64_dbl53 (   rng)
Value:
(rng->randcnt > 1 \
? (DBL53 * ((*((ub8*) (((ub4*) (rng->randrsl)) + (rng->randcnt -= 2)))) >> 11)) \
: (isaac64_generate(rng), \
rng->randcnt = RANDMAX - 2, \
DBL64 * ((*((ub8*) (((ub4*) (rng->randrsl)) + rng->randcnt))) >> 11)))
#define DBL53
Definition: isaac64.h:37
unsigned long long ub8
Definition: isaac64.h:27

Definition at line 79 of file isaac64.h.

◆ isaac64_dbl64

#define isaac64_dbl64 (   rng)
Value:
(rng->randcnt > 1 ? (DBL64 * (*((ub8*) (((ub4*) (rng->randrsl)) + (rng->randcnt -= 2))))) \
: (isaac64_generate(rng), \
rng->randcnt = RANDMAX - 2, \
DBL64 * (*((ub8*) (((ub4*) (rng->randrsl)) + rng->randcnt)))))
#define DBL64
Definition: isaac64.h:38

Definition at line 86 of file isaac64.h.

◆ isaac64_uint32

#define isaac64_uint32 (   rng)
Value:
(rng->randcnt > 0 ? (*(((ub4*) (rng->randrsl)) + (rng->randcnt -= 1))) \
: (isaac64_generate(rng), \
rng->randcnt = RANDMAX - 1, \
*(((ub4*) (rng->randrsl)) + rng->randcnt)))

Definition at line 61 of file isaac64.h.

◆ isaac64_uint64

#define isaac64_uint64 (   rng)
Value:
(rng->randcnt > 1 ? (*((ub8*) (((ub4*) (rng->randrsl)) + (rng->randcnt -= 2)))) \
: (isaac64_generate(rng), \
rng->randcnt = RANDMAX - 2, \
*((ub8*) (((ub4*) (rng->randrsl)) + rng->randcnt))))

Definition at line 67 of file isaac64.h.

◆ MSK53

#define MSK53   0x001FFFFFFFFFFFFFLL

Definition at line 39 of file isaac64.h.

◆ RANDMAX

#define RANDMAX   (2 * RANDSIZ)

Definition at line 25 of file isaac64.h.

◆ RANDSIZ

#define RANDSIZ   (1 << RANDSIZL)

Definition at line 24 of file isaac64.h.

◆ RANDSIZL

#define RANDSIZL   (4) /* I recommend 8 for crypto, 4 for simulations */

Definition at line 23 of file isaac64.h.

Typedef Documentation

◆ ub1

typedef unsigned char ub1

Definition at line 34 of file isaac64.h.

◆ ub2

typedef unsigned short int ub2

Definition at line 33 of file isaac64.h.

◆ ub4

typedef unsigned int ub4

Definition at line 31 of file isaac64.h.

◆ ub8

typedef unsigned long long ub8

Definition at line 27 of file isaac64.h.

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.