tinymt32 2406486510 4235788063 932445695 seed = 1
11101001011100010101110110010101001101011011110010
10100111000101101110110101101100100010011101101100
101000001110001100000100011
nextstate {
// yにs3を代入
y = s3;
// xに最上位1bitをオフにしたs0,そのままのs1,s2をxorしたものを代入
x = (s0 & 0x7fffffff) ^ s1 ^ s2;
// xにl1シフトしたxをxor
x ^= x << 1;
// yにr1シフトしたy,xをxor
y ^= (y >> 1) ^ x;
// S0,S1,にそれぞれs1,s2を代入
S0 = s1;
S1 = s2;
// S2にx,l10シフトしたyをxorしたものを代入
S2 = x ^ (y << 10);
// S3にyを代入
S3 = y;
// yが奇数ならS1,S2にそれぞれmat1,mat2をxor
S1 ^= -(y&1) & mat1;
S2 ^= -(y&1) & mat2;
}
temper {
// t0にS3を代入
t0 = S3;
// t1にS0にS2の上位24bitを抽出し足したものを代入
t1 = S0 + (S2 >> 8);
// t0にt1をxor
t0 ^= t1;
// t1が奇数ならt0にtmatをxor
t0 ^= -(t1&1) & tmat;
// t0をreturn
return t0;
}