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__)
72#if defined(HAVE_ALTIVEC)
73 #if !defined(__APPLE__)
78 vector
unsigned int s;
82#elif defined(HAVE_NEON)
92#elif defined(HAVE_SSE2)
94 #include <immintrin.h>
96 #include <emmintrin.h>
123 __m256i state_ymm[
SFMT_N/2];
124 #if defined(__AVX512VL__)
125 __m512i state_zmm[
SFMT_N/4];
156 uint32_t * psfmt32 = &sfmt->
state[0].
u[0];
162 r = psfmt32[sfmt->
idx++];
175#if defined(BIG_ENDIAN64) && !defined(ONLY64)
176 uint32_t * psfmt32 = &sfmt->
state[0].
u[0];
181 uint64_t * psfmt64 = &sfmt->
state[0].
u64[0];
182 assert(sfmt->
idx % 2 == 0);
188#if defined(BIG_ENDIAN64) && !defined(ONLY64)
189 r1 = psfmt32[sfmt->
idx];
190 r2 = psfmt32[sfmt->
idx + 1];
192 return ((uint64_t)r2 << 32) | r1;
194 r = psfmt64[sfmt->
idx / 2];
210 return v * (1.0/4294967295.0);
231 return v * (1.0/4294967296.0);
252 return (((
double)v) + 0.5)*(1.0/4294967296.0);
274 return (v >> 11) * (1.0/9007199254740992.0);
315#if defined(__cplusplus)
#define SFMT_N
Definition SFMT-params.h:19
#define SFMT_N32
Definition SFMT-params.h:22
void sfmt_fill_array32(sfmt_t *sfmt, uint32_t *array, int size)
void sfmt_gen_rand_all(sfmt_t *sfmt)
int sfmt_get_min_array_size64(sfmt_t *sfmt)
void sfmt_init_by_array(sfmt_t *sfmt, uint32_t *init_key, int key_length)
static double sfmt_to_real1(uint32_t v)
Definition SFMT.h:208
static uint32_t sfmt_genrand_uint32(sfmt_t *sfmt)
Definition SFMT.h:154
static double sfmt_genrand_real2(sfmt_t *sfmt)
Definition SFMT.h:240
static double sfmt_to_real3(uint32_t v)
Definition SFMT.h:250
int sfmt_get_min_array_size32(sfmt_t *sfmt)
static double sfmt_to_real2(uint32_t v)
Definition SFMT.h:229
void sfmt_init_gen_rand(sfmt_t *sfmt, uint32_t seed)
static double sfmt_to_res53_mix(uint32_t x, uint32_t y)
Definition SFMT.h:295
static double sfmt_genrand_res53_mix(sfmt_t *sfmt)
Definition SFMT.h:306
struct SFMT_T sfmt_t
Definition SFMT.h:136
const char * sfmt_get_idstring(sfmt_t *sfmt)
static double sfmt_genrand_real3(sfmt_t *sfmt)
Definition SFMT.h:261
static double sfmt_genrand_res53(sfmt_t *sfmt)
Definition SFMT.h:282
union W128_T w128_t
Definition SFMT.h:114
void sfmt_fill_array64(sfmt_t *sfmt, uint64_t *array, int size)
static double sfmt_to_res53(uint64_t v)
Definition SFMT.h:272
static double sfmt_genrand_real1(sfmt_t *sfmt)
Definition SFMT.h:219
static uint64_t sfmt_genrand_uint64(sfmt_t *sfmt)
Definition SFMT.h:174
w128_t state[SFMT_N]
Definition SFMT.h:130
int idx
Definition SFMT.h:133
uint32_t u[4]
Definition SFMT.h:108
uint64_t u64[2]
Definition SFMT.h:109