19 #if defined(HAVE_STDINT_H) 24 #define RANDSIZ (1<<RANDSIZL) 25 #define RANDMAX (2*RANDSIZ) 27 typedef unsigned long long ub8;
31 typedef unsigned int ub4;
33 typedef unsigned short int ub2;
34 typedef unsigned char ub1;
36 #define DBL32 (2.3283064365386962890625e-10) 37 #define DBL53 (1.1102230246251565404236316680908203125e-16) 38 #define DBL64 (5.42101086242752217003726400434970855712890625e-20) 39 #define MSK53 0x001FFFFFFFFFFFFFLL 63 #define isaac64_uint32(rng) \ 65 ( *(((ub4 *)(rng->randrsl)) + (rng->randcnt-=1)) ) : \ 66 ( isaac64_generate(rng), \ 67 rng->randcnt=RANDMAX-1, \ 68 *(((ub4 *)(rng->randrsl)) + rng->randcnt) )) 70 #define isaac64_uint64(rng) \ 72 ( *((ub8 *)(((ub4 *)(rng->randrsl)) + (rng->randcnt-=2))) ) : \ 73 ( isaac64_generate(rng), \ 74 rng->randcnt=RANDMAX-2, \ 75 *((ub8 *)(((ub4 *)(rng->randrsl)) + rng->randcnt)) )) 77 #define isaac64_dbl32(rng) \ 79 ( DBL32 * (*(((ub4 *)(rng->randrsl)) + (rng->randcnt-=1)) ) ) : \ 80 ( isaac64_generate(rng), \ 81 rng->randcnt=RANDMAX-1, \ 82 DBL32 * (*(((ub4 *)(rng->randrsl)) + rng->randcnt)) )) 84 #define isaac64_dbl53(rng) \ 86 ( DBL53 * ((*((ub8 *)(((ub4 *)(rng->randrsl)) + (rng->randcnt-=2))))>>11) ) : \ 87 ( isaac64_generate(rng), \ 88 rng->randcnt=RANDMAX-2, \ 89 DBL64 * ((*((ub8 *)(((ub4 *)(rng->randrsl)) + rng->randcnt)))>>11) )) 91 #define isaac64_dbl64(rng) \ 93 ( DBL64 * (*((ub8 *)(((ub4 *)(rng->randrsl)) + (rng->randcnt-=2)))) ) : \ 94 ( isaac64_generate(rng), \ 95 rng->randcnt=RANDMAX-2, \ 96 DBL64 * (*((ub8 *)(((ub4 *)(rng->randrsl)) + rng->randcnt))) )) void isaac64_generate(struct isaac64_state *rng)
void isaac64_init(struct isaac64_state *rng, ub4 seed)