37 #if defined(__cplusplus) 44 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) 46 #elif defined(_MSC_VER) || defined(__BORLANDC__) 47 typedef unsigned int uint32_t;
48 typedef unsigned __int64 uint64_t;
49 #define inline __inline 53 #define inline __inline__ 58 #if defined(_MSC_VER) || defined(__BORLANDC__) 67 #include "SFMT-params.h" 72 #if defined(HAVE_ALTIVEC) 73 #if !defined(__APPLE__) 78 vector
unsigned int s;
82 #elif defined(HAVE_NEON) 91 #elif defined(HAVE_SSE2) 92 #include <emmintrin.h> 141 uint32_t * psfmt32 = &sfmt->
state[0].
u[0];
143 if (sfmt->
idx >= SFMT_N32) {
147 r = psfmt32[sfmt->
idx++];
160 #if defined(BIG_ENDIAN64) && !defined(ONLY64) 161 uint32_t * psfmt32 = &sfmt->
state[0].
u[0];
166 uint64_t * psfmt64 = &sfmt->
state[0].
u64[0];
167 assert(sfmt->
idx % 2 == 0);
169 if (sfmt->
idx >= SFMT_N32) {
173 #if defined(BIG_ENDIAN64) && !defined(ONLY64) 174 r1 = psfmt32[sfmt->
idx];
175 r2 = psfmt32[sfmt->
idx + 1];
177 return ((uint64_t)r2 << 32) | r1;
179 r = psfmt64[sfmt->
idx / 2];
195 return v * (1.0/4294967295.0);
216 return v * (1.0/4294967296.0);
237 return (((
double)v) + 0.5)*(1.0/4294967296.0);
259 return (v >> 11) * (1.0/9007199254740992.0);
300 #if defined(__cplusplus) uint64_t u64[2]
Definition: SFMT.h:104
static double sfmt_to_res53_mix(uint32_t x, uint32_t y)
generates a random number on [0,1) with 53-bit resolution from two 32 bit integers ...
Definition: SFMT.h:280
void sfmt_fill_array32(sfmt_t *sfmt, uint32_t *array, int size)
This function generates pseudorandom 32-bit integers in the specified array[] by one call...
Definition: SFMT.c:291
uint32_t u[4]
Definition: SFMT.h:103
int idx
index counter to the 32-bit internal state array
Definition: SFMT.h:118
int sfmt_get_min_array_size32(sfmt_t *sfmt)
This function returns the minimum size of array used for fill_array32() function. ...
Definition: SFMT.c:221
SFMT internal state.
Definition: SFMT.h:114
static double sfmt_genrand_real2(sfmt_t *sfmt)
generates a random number on [0,1)-real-interval
Definition: SFMT.h:225
static double sfmt_genrand_real3(sfmt_t *sfmt)
generates a random number on (0,1)-real-interval
Definition: SFMT.h:246
static uint64_t sfmt_genrand_uint64(sfmt_t *sfmt)
This function generates and returns 64-bit pseudorandom number.
Definition: SFMT.h:159
static double sfmt_genrand_res53(sfmt_t *sfmt)
generates a random number on [0,1) with 53-bit resolution
Definition: SFMT.h:267
static double sfmt_genrand_res53_mix(sfmt_t *sfmt)
generates a random number on [0,1) with 53-bit resolution using two 32bit integers.
Definition: SFMT.h:291
w128_t state[SFMT_N]
the 128-bit internal state array
Definition: SFMT.h:116
static uint32_t sfmt_genrand_uint32(sfmt_t *sfmt)
This function generates and returns 32-bit pseudorandom number.
Definition: SFMT.h:139
const char * sfmt_get_idstring(sfmt_t *sfmt)
This function returns the identification string.
Definition: SFMT.c:210
128-bit data structure
Definition: SFMT.h:102
static double sfmt_to_real3(uint32_t v)
converts an unsigned 32-bit integer to a double on (0,1)-real-interval.
Definition: SFMT.h:235
int sfmt_get_min_array_size64(sfmt_t *sfmt)
This function returns the minimum size of array used for fill_array64() function. ...
Definition: SFMT.c:232
void sfmt_init_by_array(sfmt_t *sfmt, uint32_t *init_key, int key_length)
This function initializes the internal state array, with an array of 32-bit integers used as the seed...
Definition: SFMT.c:369
void sfmt_init_gen_rand(sfmt_t *sfmt, uint32_t seed)
This function initializes the internal state array with a 32-bit integer seed.
Definition: SFMT.c:347
void sfmt_fill_array64(sfmt_t *sfmt, uint64_t *array, int size)
This function generates pseudorandom 64-bit integers in the specified array[] by one call...
Definition: SFMT.c:327
static double sfmt_genrand_real1(sfmt_t *sfmt)
generates a random number on [0,1]-real-interval
Definition: SFMT.h:204
static double sfmt_to_real2(uint32_t v)
converts an unsigned 32-bit integer to a double on [0,1)-real-interval.
Definition: SFMT.h:214
static double sfmt_to_res53(uint64_t v)
converts an unsigned 32-bit integer to double on [0,1) with 53-bit resolution.
Definition: SFMT.h:257
void sfmt_gen_rand_all(sfmt_t *sfmt)
This function fills the internal state array with pseudorandom integers.
Definition: SFMT.c:243
static double sfmt_to_real1(uint32_t v)
converts an unsigned 32-bit number to a double on [0,1]-real-interval.
Definition: SFMT.h:193