#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "dSFMT-params.h"
Functions | |
static uint32_t | ini_func1 (uint32_t x) |
This function represents a function used in the initialization by init_by_array. | |
static uint32_t | ini_func2 (uint32_t x) |
This function represents a function used in the initialization by init_by_array. | |
static void | gen_rand_array_c1o2 (dsfmt_t *dsfmt, w128_t *array, int size) |
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format. | |
static void | gen_rand_array_c0o1 (dsfmt_t *dsfmt, w128_t *array, int size) |
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format. | |
static void | gen_rand_array_o0c1 (dsfmt_t *dsfmt, w128_t *array, int size) |
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format. | |
static void | gen_rand_array_o0o1 (dsfmt_t *dsfmt, w128_t *array, int size) |
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format. | |
static int | idxof (int i) |
This function simulate a 32-bit array index overlapped to 64-bit array of LITTLE ENDIAN in BIG ENDIAN machine. | |
static void | initial_mask (dsfmt_t *dsfmt) |
This function initializes the internal state array to fit the IEEE 754 format. | |
static void | period_certification (dsfmt_t *dsfmt) |
This function certificate the period of 2^{SFMT_MEXP}-1. | |
static void | do_recursion (w128_t *r, w128_t *a, w128_t *b, w128_t *lung) |
This function represents the recursion formula. | |
static void | convert_c0o1 (w128_t *w) |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range [0, 1). | |
static void | convert_o0c1 (w128_t *w) |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1]. | |
static void | convert_o0o1 (w128_t *w) |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1). | |
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. | |
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_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_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_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. | |
Variables | |
dsfmt_t | dsfmt_global_data |
dsfmt internal state vector | |
static const int | dsfmt_mexp = DSFMT_MEXP |
dsfmt mexp for check |
Copyright (C) 2007,2008 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved.
The new BSD License is applied to this software, see LICENSE.txt
static void convert_c0o1 | ( | w128_t * | w | ) | [inline, static] |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range [0, 1).
w | 128bit stracture of double precision floating point numbers (I/O) |
References W128_T::d.
Referenced by gen_rand_array_c0o1().
static void convert_o0c1 | ( | w128_t * | w | ) | [inline, static] |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1].
w | 128bit stracture of double precision floating point numbers (I/O) |
References W128_T::d.
Referenced by gen_rand_array_o0c1().
static void convert_o0o1 | ( | w128_t * | w | ) | [inline, static] |
This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1).
w | 128bit stracture of double precision floating point numbers (I/O) |
References W128_T::d, and W128_T::u.
Referenced by gen_rand_array_o0o1().
This function represents the recursion formula.
r | output | |
a | a 128-bit part of the internal state array | |
b | a 128-bit part of the internal state array | |
lung | a 128-bit part of the internal state array This function represents the recursion formula. | |
r | output 128-bit | |
a | a 128-bit part of the internal state array | |
b | a 128-bit part of the internal state array | |
lung | a 128-bit part of the internal state array (I/O) |
References W128_T::u.
Referenced by dsfmt_gen_rand_all(), gen_rand_array_c0o1(), gen_rand_array_c1o2(), gen_rand_array_o0c1(), and gen_rand_array_o0o1().
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 |
References dsfmt_mexp, DSFMT_N, DSFMT_N64, DSFMT_T::idx, idxof(), ini_func1(), ini_func2(), initial_mask(), period_certification(), DSFMT_T::status, and W128_T::u32.
Referenced by dsfmt_init_by_array().
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 |
References dsfmt_mexp, DSFMT_N, DSFMT_N64, DSFMT_T::idx, idxof(), initial_mask(), period_certification(), DSFMT_T::status, and W128_T::u32.
Referenced by dsfmt_init_gen_rand().
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. |
References DSFMT_N64, and gen_rand_array_c1o2().
Referenced by dsfmt_gv_fill_array_close1_open2().
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 |
References DSFMT_N64, and gen_rand_array_c0o1().
Referenced by dsfmt_gv_fill_array_close_open().
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 |
References DSFMT_N64, and gen_rand_array_o0c1().
Referenced by dsfmt_gv_fill_array_open_close().
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 |
References DSFMT_N64, and gen_rand_array_o0o1().
Referenced by dsfmt_gv_fill_array_open_open().
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. |
References do_recursion(), DSFMT_N, and DSFMT_T::status.
Referenced by dsfmt_genrand_close1_open2(), dsfmt_genrand_open_open(), and dsfmt_genrand_uint32().
const char* dsfmt_get_idstring | ( | void | ) |
This function returns the identification string.
The string shows the Mersenne exponent, and all parameters of this generator.
Referenced by get_idstring().
int dsfmt_get_min_array_size | ( | void | ) |
This function returns the minimum size of array used for fill_array functions.
References DSFMT_N64.
Referenced by get_min_array_size().
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format.
dsfmt | dsfmt state vector. | |
array | an 128-bit array to be filled by pseudorandom numbers. | |
size | number of 128-bit pseudorandom numbers to be generated. |
References convert_c0o1(), do_recursion(), DSFMT_N, and DSFMT_T::status.
Referenced by dsfmt_fill_array_close_open().
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format.
dsfmt | dsfmt state vector. | |
array | an 128-bit array to be filled by pseudorandom numbers. | |
size | number of 128-bit pseudorandom numbers to be generated. |
References do_recursion(), DSFMT_N, and DSFMT_T::status.
Referenced by dsfmt_fill_array_close1_open2().
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format.
dsfmt | dsfmt state vector. | |
array | an 128-bit array to be filled by pseudorandom numbers. | |
size | number of 128-bit pseudorandom numbers to be generated. |
References convert_o0c1(), do_recursion(), DSFMT_N, and DSFMT_T::status.
Referenced by dsfmt_fill_array_open_close().
This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format.
dsfmt | dsfmt state vector. | |
array | an 128-bit array to be filled by pseudorandom numbers. | |
size | number of 128-bit pseudorandom numbers to be generated. |
References convert_o0o1(), do_recursion(), DSFMT_N, and DSFMT_T::status.
Referenced by dsfmt_fill_array_open_open().
static int idxof | ( | int | i | ) | [inline, static] |
This function simulate a 32-bit array index overlapped to 64-bit array of LITTLE ENDIAN in BIG ENDIAN machine.
Referenced by dsfmt_chk_init_by_array(), and dsfmt_chk_init_gen_rand().
static uint32_t ini_func1 | ( | uint32_t | x | ) | [inline, static] |
This function represents a function used in the initialization by init_by_array.
x | 32-bit integer |
Referenced by dsfmt_chk_init_by_array().
static uint32_t ini_func2 | ( | uint32_t | x | ) | [inline, static] |
This function represents a function used in the initialization by init_by_array.
x | 32-bit integer |
Referenced by dsfmt_chk_init_by_array().
static void initial_mask | ( | dsfmt_t * | dsfmt | ) | [static] |
This function initializes the internal state array to fit the IEEE 754 format.
dsfmt | dsfmt state vector. |
References DSFMT_N, DSFMT_T::status, and W128_T::u.
Referenced by dsfmt_chk_init_by_array(), and dsfmt_chk_init_gen_rand().
static void period_certification | ( | dsfmt_t * | dsfmt | ) | [static] |
This function certificate the period of 2^{SFMT_MEXP}-1.
dsfmt | dsfmt state vector. |
References DSFMT_N, DSFMT_T::status, and W128_T::u.
Referenced by dsfmt_chk_init_by_array(), and dsfmt_chk_init_gen_rand().
dsfmt internal state vector
Referenced by dsfmt_gv_fill_array_close1_open2(), dsfmt_gv_fill_array_close_open(), dsfmt_gv_fill_array_open_close(), dsfmt_gv_fill_array_open_open(), dsfmt_gv_genrand_close1_open2(), dsfmt_gv_genrand_open_open(), dsfmt_gv_genrand_uint32(), dsfmt_gv_init_by_array(), and dsfmt_gv_init_gen_rand().
const int dsfmt_mexp = DSFMT_MEXP [static] |