mt 14 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 20 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 25 ext/mt-random/mt-lib.c Scm_MTInitByUI(mt, Scm_GetUInteger(init)); mt 31 ext/mt-random/mt-lib.c Scm_MTInitByUI(mt, s); mt 33 ext/mt-random/mt-lib.c Scm_MTInitByArray(mt, (ScmInt32*)SCM_U32VECTOR_ELEMENTS(init), SCM_U32VECTOR_SIZE(init)); mt 47 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 51 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 56 ext/mt-random/mt-lib.c for (i=0; i<N; i++) SCM_U32VECTOR_ELEMENTS(v)[i] = mt->mt[i]; mt 57 ext/mt-random/mt-lib.c SCM_U32VECTOR_ELEMENTS(v)[N] = mt->mti; mt 69 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 75 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 84 ext/mt-random/mt-lib.c for (i=0; i<N; i++) mt->mt[i] = SCM_U32VECTOR_ELEMENTS(state)[i]; mt 85 ext/mt-random/mt-lib.c mt->mti = SCM_U32VECTOR_ELEMENTS(state)[N]; mt 96 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 100 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 104 ext/mt-random/mt-lib.c SCM_RESULT = (Scm_MTGenrandF64(mt, TRUE)); mt 116 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 120 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 124 ext/mt-random/mt-lib.c SCM_RESULT = (Scm_MTGenrandF64(mt, FALSE)); mt 136 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 142 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 148 ext/mt-random/mt-lib.c SCM_RESULT = Scm_MTGenrandInt(mt, n); mt 160 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 164 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 168 ext/mt-random/mt-lib.c SCM_RESULT = Scm_MTGenrandU32(mt); mt 180 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 186 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 193 ext/mt-random/mt-lib.c for (i=0; i<len; i++) *p++ = Scm_MTGenrandU32(mt); mt 204 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 210 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 217 ext/mt-random/mt-lib.c for (i=0; i<len; i++) *p++ = Scm_MTGenrandF32(mt, TRUE); mt 228 ext/mt-random/mt-lib.c ScmMersenneTwister* mt; mt 234 ext/mt-random/mt-lib.c mt = SCM_MERSENNE_TWISTER(mt_scm); mt 241 ext/mt-random/mt-lib.c for (i=0; i<len; i++) *p++ = Scm_MTGenrandF64(mt, TRUE); mt 70 ext/mt-random/mt-random.c void Scm_MTInitByUI(ScmMersenneTwister *mt, unsigned long s) mt 73 ext/mt-random/mt-random.c mt->mt[0]= s & 0xffffffffUL; mt 75 ext/mt-random/mt-random.c mt->mt[mti] = mt 76 ext/mt-random/mt-random.c (1812433253UL * (mt->mt[mti-1] ^ (mt->mt[mti-1] >> 30)) + mti); mt 81 ext/mt-random/mt-random.c mt->mt[mti] &= 0xffffffffUL; mt 84 ext/mt-random/mt-random.c mt->mti = mti; mt 90 ext/mt-random/mt-random.c void Scm_MTInitByArray(ScmMersenneTwister *mt, mt 95 ext/mt-random/mt-random.c Scm_MTInitByUI(mt, 19650218UL); mt 99 ext/mt-random/mt-random.c mt->mt[i] = (mt->mt[i] ^ ((mt->mt[i-1] ^ (mt->mt[i-1] >> 30)) * 1664525UL)) mt 101 ext/mt-random/mt-random.c mt->mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ mt 103 ext/mt-random/mt-random.c if (i>=N) { mt->mt[0] = mt->mt[N-1]; i=1; } mt 107 ext/mt-random/mt-random.c mt->mt[i] = (mt->mt[i] ^ ((mt->mt[i-1] ^ (mt->mt[i-1] >> 30)) * 1566083941UL)) mt 109 ext/mt-random/mt-random.c mt->mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ mt 111 ext/mt-random/mt-random.c if (i>=N) { mt->mt[0] = mt->mt[N-1]; i=1; } mt 114 ext/mt-random/mt-random.c mt->mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */ mt 118 ext/mt-random/mt-random.c inline unsigned long Scm_MTGenrandU32(ScmMersenneTwister *mt) mt 121 ext/mt-random/mt-random.c int mti = mt->mti; mt 129 ext/mt-random/mt-random.c Scm_MTInitByUI(mt, 5489UL); /* a default initial seed is used */ mt 132 ext/mt-random/mt-random.c y = (mt->mt[kk]&UPPER_MASK)|(mt->mt[kk+1]&LOWER_MASK); mt 133 ext/mt-random/mt-random.c mt->mt[kk] = mt->mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL]; mt 136 ext/mt-random/mt-random.c y = (mt->mt[kk]&UPPER_MASK)|(mt->mt[kk+1]&LOWER_MASK); mt 137 ext/mt-random/mt-random.c mt->mt[kk] = mt->mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL]; mt 139 ext/mt-random/mt-random.c y = (mt->mt[N-1]&UPPER_MASK)|(mt->mt[0]&LOWER_MASK); mt 140 ext/mt-random/mt-random.c mt->mt[N-1] = mt->mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL]; mt 145 ext/mt-random/mt-random.c y = mt->mt[mti++]; mt 153 ext/mt-random/mt-random.c mt->mti = mti; mt 158 ext/mt-random/mt-random.c float Scm_MTGenrandF32(ScmMersenneTwister *mt, int exclude0) mt 162 ext/mt-random/mt-random.c r = (float)(Scm_MTGenrandU32(mt)*(1.0/4294967296.0)); mt 169 ext/mt-random/mt-random.c double Scm_MTGenrandF64(ScmMersenneTwister *mt, int exclude0) mt 174 ext/mt-random/mt-random.c a = Scm_MTGenrandU32(mt)>>5; mt 175 ext/mt-random/mt-random.c b = Scm_MTGenrandU32(mt)>>6; mt 220 ext/mt-random/mt-random.c static ScmObj genrand_int_small(ScmMersenneTwister *mt, unsigned long n) mt 228 ext/mt-random/mt-random.c r = Scm_MTGenrandU32(mt); mt 235 ext/mt-random/mt-random.c r = Scm_MTGenrandU32(mt); mt 241 ext/mt-random/mt-random.c ScmObj Scm_MTGenrandInt(ScmMersenneTwister *mt, ScmObj n) mt 246 ext/mt-random/mt-random.c return genrand_int_small(mt, m); mt 252 ext/mt-random/mt-random.c return genrand_int_small(mt, SCM_BIGNUM(n)->values[0]); mt 257 ext/mt-random/mt-random.c return Scm_MakeIntegerFromUI(Scm_MTGenrandU32(mt)); mt 278 ext/mt-random/mt-random.c ScmMersenneTwister *mt; mt 284 ext/mt-random/mt-random.c mt = SCM_NEW(ScmMersenneTwister); mt 285 ext/mt-random/mt-random.c SCM_SET_CLASS(mt, &Scm_MersenneTwisterClass); mt 286 ext/mt-random/mt-random.c mt->mti = N+1; mt 288 ext/mt-random/mt-random.c Scm_MTInitByUI(mt, Scm_GetUInteger(seed)); mt 290 ext/mt-random/mt-random.c Scm_MTInitByArray(mt, (ScmInt32*)SCM_U32VECTOR_ELEMENTS(seed), mt 293 ext/mt-random/mt-random.c return SCM_OBJ(mt); mt 59 ext/mt-random/mt-random.h unsigned long mt[N]; /* the array for the state vector */ mt 67 ext/mt-random/mt-random.h extern void Scm_MTInitByUI(ScmMersenneTwister *mt, unsigned long s); mt 68 ext/mt-random/mt-random.h extern void Scm_MTInitByArray(ScmMersenneTwister *mt, mt 75 ext/mt-random/mt-random.h extern ScmObj Scm_MTGenrandInt(ScmMersenneTwister *mt, ScmObj n);