| ... | ... | @@ -51,7 +51,7 @@ fn seedTwo(self: *Pcg, init_s: u64, init_i: u64) void { |
| 51 | 51 | |
| 52 | 52 | pub fn fill(self: *Pcg, buf: []u8) void { |
| 53 | 53 | var i: usize = 0; |
| 54 | | const aligned_len = buf.len - (buf.len & 7); |
| 54 | const aligned_len = buf.len - (buf.len & 3); |
| 55 | 55 | |
| 56 | 56 | // Complete 4 byte segments. |
| 57 | 57 | while (i < aligned_len) : (i += 4) { |
| ... | ... | @@ -108,11 +108,15 @@ test "pcg fill" { |
| 108 | 108 | 3247963454, |
| 109 | 109 | }; |
| 110 | 110 | |
| 111 | | for (seq) |s| { |
| 112 | | var buf0: [4]u8 = undefined; |
| 113 | | var buf1: [3]u8 = undefined; |
| 114 | | std.mem.writeIntLittle(u32, &buf0, s); |
| 111 | var i: u32 = 0; |
| 112 | while (i < seq.len) : (i += 2) { |
| 113 | var buf0: [8]u8 = undefined; |
| 114 | std.mem.writeIntLittle(u32, buf0[0..4], seq[i]); |
| 115 | std.mem.writeIntLittle(u32, buf0[4..8], seq[i + 1]); |
| 116 | |
| 117 | var buf1: [7]u8 = undefined; |
| 115 | 118 | r.fill(&buf1); |
| 116 | | try std.testing.expect(std.mem.eql(u8, buf0[0..3], buf1[0..])); |
| 119 | |
| 120 | try std.testing.expect(std.mem.eql(u8, buf0[0..7], buf1[0..])); |
| 117 | 121 | } |
| 118 | 122 | } |