#include <stdio.h>
#include <assert.h>
#include "dSFMT-params.h"
#include <inttypes.h>
Go to the source code of this file.
Data Structures | |
union | W128_T |
128-bit data structure More... | |
struct | DSFMT_T |
the 128-bit internal state array More... | |
Defines | |
#define | inline |
#define | PRIu64 "llu" |
#define | PRIx64 "llx" |
#define | UINT64_C(v) (v ## ULL) |
#define | DSFMT_PRE_INLINE inline static |
#define | DSFMT_PST_INLINE |
Typedefs | |
typedef W128_T | w128_t |
128-bit data type | |
typedef DSFMT_T | dsfmt_t |
Functions | |
void | dsfmt_gen_rand_all (dsfmt_t *dsfmt) |
This function fills the internal state array with double precision floating point pseudorandom numbers of the IEEE 754 format. | |
void | dsfmt_fill_array_open_close (dsfmt_t *dsfmt, double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call. | |
void | dsfmt_fill_array_close_open (dsfmt_t *dsfmt, double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call. | |
void | dsfmt_fill_array_open_open (dsfmt_t *dsfmt, double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call. | |
void | dsfmt_fill_array_close1_open2 (dsfmt_t *dsfmt, double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call. | |
void | dsfmt_chk_init_gen_rand (dsfmt_t *dsfmt, uint32_t seed, int mexp) |
This function initializes the internal state array with a 32-bit integer seed. | |
void | dsfmt_chk_init_by_array (dsfmt_t *dsfmt, uint32_t init_key[], int key_length, int mexp) |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds. | |
const char * | dsfmt_get_idstring (void) |
This function returns the identification string. | |
int | dsfmt_get_min_array_size (void) |
This function returns the minimum size of array used for fill_array functions. | |
DSFMT_PRE_INLINE double | dsfmt_genrand_close1_open2 (dsfmt_t *dsfmt) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2). | |
DSFMT_PRE_INLINE double | dsfmt_genrand_close_open (dsfmt_t *dsfmt) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1). | |
DSFMT_PRE_INLINE double | dsfmt_genrand_open_close (dsfmt_t *dsfmt) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1]. | |
DSFMT_PRE_INLINE double | dsfmt_genrand_open_open (dsfmt_t *dsfmt) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1). | |
DSFMT_PRE_INLINE double | dsfmt_gv_genrand_close1_open2 (void) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2). | |
DSFMT_PRE_INLINE double | dsfmt_gv_genrand_close_open (void) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1). | |
DSFMT_PRE_INLINE double | dsfmt_gv_genrand_open_close (void) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1]. | |
DSFMT_PRE_INLINE double | dsfmt_gv_genrand_open_open (void) |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1). | |
DSFMT_PRE_INLINE void | dsfmt_gv_fill_array_open_close (double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call. | |
DSFMT_PRE_INLINE void | dsfmt_gv_fill_array_close_open (double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call. | |
DSFMT_PRE_INLINE void | dsfmt_gv_fill_array_open_open (double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call. | |
DSFMT_PRE_INLINE void | dsfmt_gv_fill_array_close1_open2 (double array[], int size) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call. | |
DSFMT_PRE_INLINE void | dsfmt_gv_init_gen_rand (uint32_t seed) |
This function initializes the internal state array with a 32-bit integer seed. | |
DSFMT_PRE_INLINE void | dsfmt_gv_init_by_array (uint32_t init_key[], int key_length) |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds. | |
DSFMT_PRE_INLINE void | dsfmt_init_gen_rand (dsfmt_t *dsfmt, uint32_t seed) |
This function initializes the internal state array with a 32-bit integer seed. | |
DSFMT_PRE_INLINE void | dsfmt_init_by_array (dsfmt_t *dsfmt, uint32_t init_key[], int key_length) |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds. | |
DSFMT_PRE_INLINE const char * | get_idstring (void) |
This function is just the same as dsfmt_get_idstring(). | |
DSFMT_PRE_INLINE int | get_min_array_size (void) |
This function is just the same as dsfmt_get_min_array_size(). | |
DSFMT_PRE_INLINE void | init_gen_rand (uint32_t seed) |
This function is just the same as dsfmt_gv_init_gen_rand(). | |
DSFMT_PRE_INLINE void | init_by_array (uint32_t init_key[], int key_length) |
This function is just the same as dsfmt_gv_init_by_array(). | |
DSFMT_PRE_INLINE double | genrand_close1_open2 (void) |
This function is just the same as dsfmt_gv_genrand_close1_open2(). | |
DSFMT_PRE_INLINE double | genrand_close_open (void) |
This function is just the same as dsfmt_gv_genrand_close_open(). | |
DSFMT_PRE_INLINE double | genrand_open_close (void) |
This function is just the same as dsfmt_gv_genrand_open_close(). | |
DSFMT_PRE_INLINE double | genrand_open_open (void) |
This function is just the same as dsfmt_gv_genrand_open_open(). | |
DSFMT_PRE_INLINE void | fill_array_open_close (double array[], int size) |
This function is juset the same as dsfmt_gv_fill_array_open_close(). | |
DSFMT_PRE_INLINE void | fill_array_close_open (double array[], int size) |
This function is juset the same as dsfmt_gv_fill_array_close_open(). | |
DSFMT_PRE_INLINE void | fill_array_open_open (double array[], int size) |
This function is juset the same as dsfmt_gv_fill_array_open_open(). | |
DSFMT_PRE_INLINE void | fill_array_close1_open2 (double array[], int size) |
This function is juset the same as dsfmt_gv_fill_array_close1_open2(). | |
Variables | |
int | dsfmt_global_is_initialized |
dsfmt initialized flag | |
dsfmt_t | dsfmt_global_data |
dsfmt internal state vector | |
const int | dsfmt_global_mexp |
dsfmt mexp for check |
Makoto Matsumoto (Hiroshima University)
The new BSD License is applied to this software. see LICENSE.txt
typedef unsigned int uint32_t typedef unsigned long long uint64_t #define PRIu64 "llu" #define PRIx64 "llx"
#define DSFMT_PRE_INLINE inline static |
#define DSFMT_PST_INLINE |
#define inline |
#define PRIu64 "llu" |
#define PRIx64 "llx" |
#define UINT64_C | ( | v | ) | (v ## ULL) |
void dsfmt_chk_init_by_array | ( | dsfmt_t * | dsfmt, | |
uint32_t | init_key[], | |||
int | key_length, | |||
int | mexp | |||
) |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds.
dsfmt | dsfmt state vector. | |
init_key | the array of 32-bit integers, used as a seed. | |
key_length | the length of init_key. | |
mexp | caller's mersenne expornent |
void dsfmt_chk_init_gen_rand | ( | dsfmt_t * | dsfmt, | |
uint32_t | seed, | |||
int | mexp | |||
) |
This function initializes the internal state array with a 32-bit integer seed.
dsfmt | dsfmt state vector. | |
seed | a 32-bit integer used as the seed. | |
mexp | caller's mersenne expornent |
void dsfmt_fill_array_close1_open2 | ( | dsfmt_t * | dsfmt, | |
double | array[], | |||
int | size | |||
) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call.
The number of pseudorandom numbers is specified by the argument size, which must be at least (SFMT_MEXP / 128) * 2 and a multiple of two. The function get_min_array_size() returns this minimum size. The generation by this function is much faster than the following fill_array_xxx functions.
For initialization, init_gen_rand() or init_by_array() must be called before the first call of this function. This function can not be used after calling genrand_xxx functions, without initialization.
dsfmt | dsfmt state vector. | |
array | an array where pseudorandom numbers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary. | |
size | the number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (SFMT_MEXP / 128) * 2. |
void dsfmt_fill_array_close_open | ( | dsfmt_t * | dsfmt, | |
double | array[], | |||
int | size | |||
) |
This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call.
This function is the same as fill_array_close1_open2() except the distribution range.
array | an array where pseudorandom numbers are filled by this function. | |
dsfmt | dsfmt state vector. | |
size | the number of pseudorandom numbers to be generated. see also |
void dsfmt_fill_array_open_close | ( | dsfmt_t * | dsfmt, | |
double | array[], | |||
int | size | |||
) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call.
This function is the same as fill_array_close1_open2() except the distribution range.
dsfmt | dsfmt state vector. | |
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
void dsfmt_fill_array_open_open | ( | dsfmt_t * | dsfmt, | |
double | array[], | |||
int | size | |||
) |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call.
This function is the same as fill_array_close1_open2() except the distribution range.
dsfmt | dsfmt state vector. | |
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
void dsfmt_gen_rand_all | ( | dsfmt_t * | dsfmt | ) |
This function fills the internal state array with double precision floating point pseudorandom numbers of the IEEE 754 format.
dsfmt | dsfmt state vector. |
static double dsfmt_genrand_close1_open2 | ( | dsfmt_t * | dsfmt | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2).
This is the primitive and faster than generating numbers in other ranges. dsfmt_init_gen_rand() or dsfmt_init_by_array() must be called before this function.
dsfmt | dsfmt internal state date |
static double dsfmt_genrand_close_open | ( | dsfmt_t * | dsfmt | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1).
dsfmt_init_gen_rand() or dsfmt_init_by_array() must be called before this function.
dsfmt | dsfmt internal state date |
static double dsfmt_genrand_open_close | ( | dsfmt_t * | dsfmt | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1].
dsfmt_init_gen_rand() or dsfmt_init_by_array() must be called before this function.
dsfmt | dsfmt internal state date |
static double dsfmt_genrand_open_open | ( | dsfmt_t * | dsfmt | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1).
dsfmt_init_gen_rand() or dsfmt_init_by_array() must be called before this function.
dsfmt | dsfmt internal state date |
const char* dsfmt_get_idstring | ( | void | ) |
This function returns the identification string.
The string shows the Mersenne exponent, and all parameters of this generator.
int dsfmt_get_min_array_size | ( | void | ) |
This function returns the minimum size of array used for fill_array functions.
static void dsfmt_gv_fill_array_close1_open2 | ( | double | array[], | |
int | size | |||
) | [inline] |
This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call.
This function is the same as dsfmt_fill_array_close1_open2() except that this function uses global variables.
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void dsfmt_gv_fill_array_close_open | ( | double | array[], | |
int | size | |||
) | [inline] |
This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call.
This function is the same as dsfmt_gv_fill_array_close1_open2() except the distribution range. This function uses global variables.
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void dsfmt_gv_fill_array_open_close | ( | double | array[], | |
int | size | |||
) | [inline] |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call.
This function is the same as dsfmt_gv_fill_array_close1_open2() except the distribution range. This function uses global variables.
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void dsfmt_gv_fill_array_open_open | ( | double | array[], | |
int | size | |||
) | [inline] |
This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call.
This function is the same as dsfmt_gv_fill_array_close1_open2() except the distribution range. This function uses global variables.
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static double dsfmt_gv_genrand_close1_open2 | ( | void | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2).
This is the primitive and faster than generating numbers in other ranges. dsfmt_gv_init_gen_rand() or dsfmt_gv_init_by_array() must be called before this function. This function uses global variables.
static double dsfmt_gv_genrand_close_open | ( | void | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1).
dsfmt_gv_init_gen_rand() or dsfmt_gv_init_by_array() must be called before this function. This function uses global variables.
static double dsfmt_gv_genrand_open_close | ( | void | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1].
dsfmt_gv_init_gen_rand() or dsfmt_gv_init_by_array() must be called before this function. This function uses global variables.
static double dsfmt_gv_genrand_open_open | ( | void | ) | [inline] |
This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1).
dsfmt_gv_init_gen_rand() or dsfmt_gv_init_by_array() must be called before this function. This function uses global variables.
static void dsfmt_gv_init_by_array | ( | uint32_t | init_key[], | |
int | key_length | |||
) | [inline] |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds.
This function uses global variables.
init_key | the array of 32-bit integers, used as a seed. | |
key_length | the length of init_key. see also |
static void dsfmt_gv_init_gen_rand | ( | uint32_t | seed | ) | [inline] |
This function initializes the internal state array with a 32-bit integer seed.
This function uses global variables.
seed | a 32-bit integer used as the seed. see also |
static void dsfmt_init_by_array | ( | dsfmt_t * | dsfmt, | |
uint32_t | init_key[], | |||
int | key_length | |||
) | [inline] |
This function initializes the internal state array, with an array of 32-bit integers used as the seeds.
dsfmt | dsfmt state vector | |
init_key | the array of 32-bit integers, used as a seed. | |
key_length | the length of init_key. |
static void dsfmt_init_gen_rand | ( | dsfmt_t * | dsfmt, | |
uint32_t | seed | |||
) | [inline] |
This function initializes the internal state array with a 32-bit integer seed.
dsfmt | dsfmt state vector. | |
seed | a 32-bit integer used as the seed. |
static void fill_array_close1_open2 | ( | double | array[], | |
int | size | |||
) | [inline] |
This function is juset the same as dsfmt_gv_fill_array_close1_open2().
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void fill_array_close_open | ( | double | array[], | |
int | size | |||
) | [inline] |
This function is juset the same as dsfmt_gv_fill_array_close_open().
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void fill_array_open_close | ( | double | array[], | |
int | size | |||
) | [inline] |
This function is juset the same as dsfmt_gv_fill_array_open_close().
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static void fill_array_open_open | ( | double | array[], | |
int | size | |||
) | [inline] |
This function is juset the same as dsfmt_gv_fill_array_open_open().
array | an array where pseudorandom numbers are filled by this function. | |
size | the number of pseudorandom numbers to be generated. see also |
static double genrand_close1_open2 | ( | void | ) | [inline] |
This function is just the same as dsfmt_gv_genrand_close1_open2().
static double genrand_close_open | ( | void | ) | [inline] |
This function is just the same as dsfmt_gv_genrand_close_open().
static double genrand_open_close | ( | void | ) | [inline] |
This function is just the same as dsfmt_gv_genrand_open_close().
static double genrand_open_open | ( | void | ) | [inline] |
This function is just the same as dsfmt_gv_genrand_open_open().
static const char * get_idstring | ( | void | ) | [inline] |
This function is just the same as dsfmt_get_idstring().
static int get_min_array_size | ( | void | ) | [inline] |
This function is just the same as dsfmt_get_min_array_size().
static void init_by_array | ( | uint32_t | init_key[], | |
int | key_length | |||
) | [inline] |
This function is just the same as dsfmt_gv_init_by_array().
init_key | the array of 32-bit integers, used as a seed. | |
key_length | the length of init_key. see also |
static void init_gen_rand | ( | uint32_t | seed | ) | [inline] |
This function is just the same as dsfmt_gv_init_gen_rand().
seed | a 32-bit integer used as the seed. see also |
dsfmt internal state vector
dsfmt initialized flag
const int dsfmt_global_mexp |
dsfmt mexp for check