fn next(self: *Pcg) u32 self: *Pcg27
28
29
30
31
32
33
34
35fn next(self: *Pcg) u32 {
const l = self.s;
self.s = l *% default_multiplier +% (self.i | 1);
const xor_s: u32 = @truncate(((l >> 18) ^ l) >> 27);
const rot: u32 = @intCast(l >> 59);
return (xor_s >> @as(u5, @intCast(rot))) | (xor_s << @as(u5, @intCast((0 -% rot) & 31)));
}