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:42
#define RANDMAX
Definition: isaac64.h:25
unsigned int ub4
Definition: isaac64.h:31
#define DBL32
Definition: isaac64.h:36

Definition at line 77 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) ))
void isaac64_generate(struct isaac64_state *rng)
Definition: isaac64.cpp:42
#define RANDMAX
Definition: isaac64.h:25
unsigned int ub4
Definition: isaac64.h:31
#define DBL53
Definition: isaac64.h:37
unsigned long long ub8
Definition: isaac64.h:27

Definition at line 84 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))) ))
void isaac64_generate(struct isaac64_state *rng)
Definition: isaac64.cpp:42
#define RANDMAX
Definition: isaac64.h:25
unsigned int ub4
Definition: isaac64.h:31
unsigned long long ub8
Definition: isaac64.h:27
#define DBL64
Definition: isaac64.h:38

Definition at line 91 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) ))
void isaac64_generate(struct isaac64_state *rng)
Definition: isaac64.cpp:42
#define RANDMAX
Definition: isaac64.h:25
unsigned int ub4
Definition: isaac64.h:31

Definition at line 63 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)) ))
void isaac64_generate(struct isaac64_state *rng)
Definition: isaac64.cpp:42
#define RANDMAX
Definition: isaac64.h:25
unsigned int ub4
Definition: isaac64.h:31
unsigned long long ub8
Definition: isaac64.h:27

Definition at line 70 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 42 of file isaac64.cpp.

◆ isaac64_init()

void isaac64_init ( struct isaac64_state rng,
ub4  seed 
)

Definition at line 67 of file isaac64.cpp.