49 #define MATRIX_A 0x9908b0dfUL 50 #define UPPER_MASK 0x80000000UL 51 #define LOWER_MASK 0x7fffffffUL 53 static unsigned long mt[
N];
59 mt[0]= s & 0xffffffffUL;
67 mt[
mti] &= 0xffffffffUL;
81 k = (
N>key_length ?
N : key_length);
83 mt[i] = (
mt[i] ^ ((
mt[i-1] ^ (
mt[i-1] >> 30)) * 1664525UL))
85 mt[i] &= 0xffffffffUL;
87 if (i>=
N) {
mt[0] =
mt[
N-1]; i=1; }
88 if (j>=key_length) j=0;
91 mt[i] = (
mt[i] ^ ((
mt[i-1] ^ (
mt[i-1] >> 30)) * 1566083941UL))
93 mt[i] &= 0xffffffffUL;
95 if (i>=
N) {
mt[0] =
mt[
N-1]; i=1; }
105 static unsigned long mag01[2]={0x0UL,
MATRIX_A};
114 for (kk=0;kk<
N-
M;kk++) {
116 mt[kk] =
mt[kk+
M] ^ (y >> 1) ^ mag01[y & 0x1UL];
120 mt[kk] =
mt[kk+(
M-
N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
123 mt[
N-1] =
mt[
M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
132 y ^= (y << 7) & 0x9d2c5680UL;
133 y ^= (y << 15) & 0xefc60000UL;
170 return(a*67108864.0+b)*(1.0/9007199254740992.0);
double genrand_real2(void)
void init_by_array(unsigned long init_key[], int key_length)
double genrand_real3(void)
static unsigned long mt[N]
double genrand_res53(void)
unsigned long genrand_int32(void)
double genrand_real1(void)
void init_genrand(unsigned long s)