I have been attempting to execute the following matrix multiplication over GF(2) using the FiniteFields package with (17 x 18) x (18 x 17) rectangular matrices, but Mathematica (version 12.1.1.0, Mac OS) is hanging indefinitely (I killed the kernel after waiting a few minutes):
<< FiniteFields`
m = {{GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{0}]}, {GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}]}, {GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{0}],
GF[2][{0}]}, {GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{0}]}, {GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{1}]}, {GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}]}, {GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{0}]}, {GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{0}], GF[2][{0}]}, {GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}]}, {GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}]}, {GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}],
GF[2][{1}]}, {GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{0}]}, {GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}]}, {GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{0}], GF[2][{0}]}, {GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{1}],
GF[2][{1}]}, {GF[2][{1}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}]}, {GF[2][{0}], GF[2][{0}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}],
GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{1}]}, {GF[2][{1}], GF[2][{1}], GF[2][{1}], GF[2][{0}],
GF[2][{0}], GF[2][{0}], GF[2][{1}], GF[2][{1}], GF[2][{1}],
GF[2][{1}], GF[2][{1}], GF[2][{0}], GF[2][{0}], GF[2][{0}],
GF[2][{1}], GF[2][{1}], GF[2][{0}]}}
Transpose[m] . m
A very small (3 x 2) x (2 x 3) rectangular example however works immediately:
<< FiniteFields`
x = {{GF[2][{1}], GF[2][{1}], GF[2][{1}]}, {GF[2][{1}], GF[2][{0}],
GF[2][{1}]}}
Transpose[x] . x
Any ideas? Also of note, the smaller example produces "0" instead of "{0}_2", but I've seen other calculations keep the idea that the zero is in GF(2):
GF[2][{1}] * GF[2][{0}]
produces "{0}_2", but
GF[2][{1}] + GF[2][{1}]
produces "0" which is odd.