I have been trying to implement a Reed Solomon encoder to produce code words in systematic form with the message followed by the check symbols. For comparison, I have referenced this whitepaper:http://www.bbc.co.uk/rd/pubs/whp/whp031.shtml which is very instructive with hand calculations and LFSR description.
For the example given in this whitepaper the primitive polynomial of the RS(15,11) code is X^4 + X + 1 and the message is 1,2,3,4,5,6,7,8,9,10,11 and the resulting check symbols are 3,3,12,12.
I can verify this by hand. I have also used this code https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders referenced by the Wikipedia article on Reed Solomon to verify that the check symbols are 3,3,12,12.
However, when I use the Python galois package and this code I get different results. The check symbols are 11,10,14,6.
import galois
rs = galois.ReedSolomon(15,11, primitive_poly = 19)
GF = rs.field;
## Encode the message
m = GF([1,2,3,4,5,6,7,8,9,10,11])
c = rs.encode(m)
This result agrees with MATLAB.
Are there two different algorithms to encode a systematic codeword in reed solomon that yield different check symbols? If not, which method is correct?