Bug 45: In Soviet Russia, Matrices Multiply YOU
- This is Kronrod's algorithm for multiplying Boolean matrices (the Method of Four Russians).
- It multiplies two 64x64 matrices (a times b) and adds the result to a third 64x64 matrix (c).
- Each 64x64 matrix has 1-bit elements and is represented by an array of sixty-four 64-bit integers.
- The matrices are row-major: Each row is one 64-bit integer. Column 0 is the least-significant bit.
- 1-bits in row r of matrix a select rows of matrix b. Selected rows are added to row r of matrix c.
- Matrix b is split into 64/n sets of n rows. All subset sums are precomputed for each set of n rows.
- The corresponding n bits from each row of matrix a are used to choose among these precomputed sums.
- Addition is XOR in this implementation, but OR could be used instead.
Fix The Tiny Bug In This Go Code: