We implemented the decoder for a (31, 15) RS code over GF(32).
The codewords consist of vectors (C0, C1, ...
C30) where each Ci is in GF(32) and
        
Sum{Ciaij} = 0, for i = 0 ... 30, j = 1 ... 16.
where a is a primitive root in GF(32) satisfying
a5 = a2 + 1.
In the codeword, the first 15 characters are information bits and the
last 16 characters are parity-check bits.
Given a garbled codeword, the decoder is capable of correcting up to
x erasures and y errors, where x + 2y <= 16. And when x + 2y > 16,
the decoder will output an appropriate error message.
The Decoder
To ease input, we will use A, B, ... Z, 1, 2, ... 6 in place of 0 ... 31.
Erasures are represented by '*'.
To encode an information word, simply type in the 15 information bits as
as the first 15 bits of the decoder, pad rest of the codeword with erasures
and run the decoder.
The JApplet version of the decoder is at RSJ.html
and the Applet version of the decoder is at RS.html
This software is licensed with GNU GPL. The source code can be found
here.