Generate GF(2**m) from the irreducible polynomial p(X) in p[0]..p[m]
Lookup tables:
index->polynomial form gf_exp[] contains j= \alpha^i;
polynomial form -> index form gf_log[ j = \alpha^i ] = i
\alpha=x is the primitive element of GF(2^m)
For efficiency, gf_exp[] has size 2*gfSize, so that a simple
multiplication of two numbers can be resolved without calling modnn
Notes about large N support:
you can just generate the top k*k vandermonde matrix, call it V,
then invert it, then when you have k blocks generate a matrix M
with the k rows you need and E = M* V^{-1} is the encoding matrix
for the systematic code which you then need to invert to perform
the decoding.