| 318 | } |
| 319 | |
| 320 | static Rand64 nextrand (Rand64 *state) { |
| 321 | Rand64 state0 = state[0]; |
| 322 | Rand64 state1 = state[1]; |
| 323 | Rand64 state2 = state[2] ^ state0; |
| 324 | Rand64 state3 = state[3] ^ state1; |
| 325 | Rand64 res = rotl(state1 * 5, 7) * 9; |
| 326 | state[0] = state0 ^ state3; |
| 327 | state[1] = state1 ^ state2; |
| 328 | state[2] = state2 ^ (state1 << 17); |
| 329 | state[3] = rotl(state3, 45); |
| 330 | return res; |
| 331 | } |
| 332 | |
| 333 | |
| 334 | /* |