k = message length (223)
s = error correcting power (16)
n = k + 2s total message length (255)

j = number of distinct digit values (for each digit in message/codeword) (256)

k digit message:
m_0, m_1, ..., m_(k-1)

message polynomial:
m(x) = m_0 + m_1 x + m_2 x^2 + ... + m_(k-1) x^(k-1)

map all distinct digit values (all j of them) to elements in a field F

F[x] = set of polynomials with coefficients in F

g(x) = (x - alpha) * (x - alpha^2) ... (x - alpha^(2s)) generator polynomial
where alpha is a primitive (generator) element of GF(p^r)
Has 32 roots, alpha through alpha^32

k digit messages are mapped to a multiple of g(x). All codewords are multiples
of g(x)

R(x) = C(x) + E(x)
E(x) = E_0 + E_1 x + ... + E_(n-1) x^(n-1)

Non-zero error polynomial coefficients are errors.
position of errors held in an array that's up to 16 elements large:
j_1, j_2, ..., j_s
each j_i is a distinct integer between 0 and n-1 (254)

X_i = alpha^(j_i), the j_ith power of alpha, a GF256 number between 1 and 255
Y_i = E_(j_i), the GF256 magnitude of the ith error
