Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(367)

Side by Side Diff: third_party/mt19937ar/mt19937ar.cc

Issue 1551483002: Switch to standard integer types in third_party/mt19937ar/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/mt19937ar/mt19937ar.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 A C-program for MT19937, with initialization improved 2002/1/26. 2 A C-program for MT19937, with initialization improved 2002/1/26.
3 Coded by Takuji Nishimura and Makoto Matsumoto. 3 Coded by Takuji Nishimura and Makoto Matsumoto.
4 4
5 Before using, initialize the state by using init_genrand(seed) 5 Before using, initialize the state by using init_genrand(seed)
6 or init_by_array(init_key, key_length). 6 or init_by_array(init_key, key_length).
7 7
8 Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, 8 Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
9 All rights reserved. 9 All rights reserved.
10 10
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 #define UPPER_MASK 0x80000000UL /* most significant w-r bits */ 50 #define UPPER_MASK 0x80000000UL /* most significant w-r bits */
51 #define LOWER_MASK 0x7fffffffUL /* least significant r bits */ 51 #define LOWER_MASK 0x7fffffffUL /* least significant r bits */
52 52
53 MersenneTwister::MersenneTwister() : mt(N), mti(N+1) { 53 MersenneTwister::MersenneTwister() : mt(N), mti(N+1) {
54 } 54 }
55 55
56 MersenneTwister::~MersenneTwister() { 56 MersenneTwister::~MersenneTwister() {
57 } 57 }
58 58
59 /* initializes mt[N] with a seed */ 59 /* initializes mt[N] with a seed */
60 void MersenneTwister::init_genrand(uint32 s) 60 void MersenneTwister::init_genrand(uint32_t s)
61 { 61 {
62 mt[0]= s & 0xffffffffUL; 62 mt[0]= s & 0xffffffffUL;
63 for (mti=1; mti<N; mti++) { 63 for (mti=1; mti<N; mti++) {
64 mt[mti] = 64 mt[mti] =
65 (1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti); 65 (1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti);
66 /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ 66 /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
67 /* In the previous versions, MSBs of the seed affect */ 67 /* In the previous versions, MSBs of the seed affect */
68 /* only MSBs of the array mt[]. */ 68 /* only MSBs of the array mt[]. */
69 /* 2002/01/09 modified by Makoto Matsumoto */ 69 /* 2002/01/09 modified by Makoto Matsumoto */
70 mt[mti] &= 0xffffffffUL; 70 mt[mti] &= 0xffffffffUL;
71 /* for >32 bit machines */ 71 /* for >32 bit machines */
72 } 72 }
73 } 73 }
74 74
75 /* initialize by an array with array-length */ 75 /* initialize by an array with array-length */
76 /* init_key is the array for initializing keys */ 76 /* init_key is the array for initializing keys */
77 /* key_length is its length */ 77 /* key_length is its length */
78 /* slight change for C++, 2004/2/26 */ 78 /* slight change for C++, 2004/2/26 */
79 void MersenneTwister::init_by_array(uint32 init_key[], int key_length) 79 void MersenneTwister::init_by_array(uint32_t init_key[], int key_length)
80 { 80 {
81 int i, j, k; 81 int i, j, k;
82 init_genrand(19650218UL); 82 init_genrand(19650218UL);
83 i=1; j=0; 83 i=1; j=0;
84 k = (N>key_length ? N : key_length); 84 k = (N>key_length ? N : key_length);
85 for (; k; k--) { 85 for (; k; k--) {
86 mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL)) 86 mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL))
87 + init_key[j] + j; /* non linear */ 87 + init_key[j] + j; /* non linear */
88 mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ 88 mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
89 i++; j++; 89 i++; j++;
90 if (i>=N) { mt[0] = mt[N-1]; i=1; } 90 if (i>=N) { mt[0] = mt[N-1]; i=1; }
91 if (j>=key_length) j=0; 91 if (j>=key_length) j=0;
92 } 92 }
93 for (k=N-1; k; k--) { 93 for (k=N-1; k; k--) {
94 mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL)) 94 mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL))
95 - i; /* non linear */ 95 - i; /* non linear */
96 mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ 96 mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
97 i++; 97 i++;
98 if (i>=N) { mt[0] = mt[N-1]; i=1; } 98 if (i>=N) { mt[0] = mt[N-1]; i=1; }
99 } 99 }
100 100
101 mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */ 101 mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
102 } 102 }
103 103
104 /* generates a random number on [0,0xffffffff]-interval */ 104 /* generates a random number on [0,0xffffffff]-interval */
105 uint32 MersenneTwister::genrand_int32(void) 105 uint32_t MersenneTwister::genrand_int32(void)
106 { 106 {
107 uint32 y; 107 uint32_t y;
108 static uint32 mag01[2]={0x0UL, MATRIX_A}; 108 static uint32_t mag01[2]={0x0UL, MATRIX_A};
109 /* mag01[x] = x * MATRIX_A for x=0,1 */ 109 /* mag01[x] = x * MATRIX_A for x=0,1 */
110 110
111 if (mti >= N) { /* generate N words at one time */ 111 if (mti >= N) { /* generate N words at one time */
112 int kk; 112 int kk;
113 113
114 if (mti == N+1) /* if init_genrand() has not been called, */ 114 if (mti == N+1) /* if init_genrand() has not been called, */
115 init_genrand(5489UL); /* a default initial seed is used */ 115 init_genrand(5489UL); /* a default initial seed is used */
116 116
117 for (kk=0;kk<N-M;kk++) { 117 for (kk=0;kk<N-M;kk++) {
118 y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK); 118 y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
(...skipping 12 matching lines...) Expand all
131 y = mt[mti++]; 131 y = mt[mti++];
132 132
133 /* Tempering */ 133 /* Tempering */
134 y ^= (y >> 11); 134 y ^= (y >> 11);
135 y ^= (y << 7) & 0x9d2c5680UL; 135 y ^= (y << 7) & 0x9d2c5680UL;
136 y ^= (y << 15) & 0xefc60000UL; 136 y ^= (y << 15) & 0xefc60000UL;
137 y ^= (y >> 18); 137 y ^= (y >> 18);
138 138
139 return y; 139 return y;
140 } 140 }
OLDNEW
« no previous file with comments | « third_party/mt19937ar/mt19937ar.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698