Computes the square of a matrix in GF(2), i.e dst = dst x src.
This produces the operator for doubling the number of zeroes:
if src represents advancing the CRC by k zeroes, then dest will
represent advancing by 2k zeroes.
Since polynomial multiplication mod POLY is linear, mat(mat(x)) = mat^2(x)
gives the effect of two sequential applications of the operator.
fn square(dst: *[32]u32, src: *const [32]u32) void
fn square(dst: *[32]u32, src: *const [32]u32) void {
for (dst, src) |*d, s| {
d.* = times(src, s);
}
}