See header for documentation. */
| 37 | |
| 38 | /* See header for documentation. */ |
| 39 | uint64_t astc::rand(uint64_t state[2]) |
| 40 | { |
| 41 | uint64_t s0 = state[0]; |
| 42 | uint64_t s1 = state[1]; |
| 43 | uint64_t res = s0 + s1; |
| 44 | s1 ^= s0; |
| 45 | state[0] = rotl(s0, 24) ^ s1 ^ (s1 << 16); |
| 46 | state[1] = rotl(s1, 37); |
| 47 | return res; |
| 48 | } |