README for Reed-Solomon Decoder (Ling Li, Caltech, Feb. 5, 2001) ---------------------------------------------------------------------- EE/Ma 127b Project 1, a decoder for (31,15) R-S code over GF(32). Implemented in Java. Please see http://www.cs.caltech.edu/~ling/course/ee127b/ for more about decoding R-S codes. ---------------------------------------------------------------------- Summary: Operations with numbers and polynomials over $GF(32)$ are needed. So I designed two classes. One (GF) deals with numbers in $GF(q)$ and the other (GFPoly) with polynomials over $GF(q)$. GFPoly provides methods like euclid and fft. The class RS, by calling methods in GF and GFPoly, does the work of calculating the syndrome $S$, $\sigma$ and $\omega$, and decoding in time domain and frequency domain. Please refer to RJM Chapter 9 for the details of the decoding. The input/output conversion is carried out in a Java applet. Either form, such as "A*B1*3" or "0,*,1,26,*,28" can be used for input. Exceptions: 1. Too many erasures. The number of erasures should not excel 16. 2. Syndrome is 0. A valid codeword received. 3. $\sigma_0$ is 0. $\sigma$ can't be `normalized'. 4. Degree of $\sigma$ is less than or equal to that of $\omega$. Too many errors prevent us to get a correct $\sigma$ --- the degree of $\sigma$ should be larger than $(r-e_0)/2$. 5. (Time domain) $\sigma$ has not enough roots. $\sigma$ should has $d$ distinct roots if it is of degree $d$. 6. (Frequency domain) $S$ verified error. ---------------------------------------------------------------------- Files: ecc/GF.java +,-,*,/ with numbers in GF(q). ecc/GFPoly.java +,-,*,/,euclid with polynomials over GF(q). ecc/RS.java RS decoder. RSDecoder.java The decoder applet. ---------------------------------------------------------------------- Problems: 1. This is my first time to do project in Java. Ugly programming. 2. I am not sure about RS when $n < p^m-1$. That is, for shortened R-S codes, class RS may do wrong work. ---------------------------------------------------------------------- Note: Designed by JBuilder 3.5, JDK 1.2.2; In order to be compatible with browsers using JDK 1.0 (or 1.1?), the codes corresponding to GridBagLayout was manually revised. ---------------------------------------------------------------------- This file together with the applet and its programs can be found at http://www.cs.caltech.edu/~ling/course/ee127b/proj1/