The ErrorZ project implements the error correcting code I described in my paper published in the Russian journal Autometria in 1996 (original paper in Russian). The journal was translated and published in the USA by Allerton Press, Inc. as Optoelectronics, Instrumentation and Data Processing.
The main idea was to work in a finite field of a large size, say GF(2^64), but use locators from its proper subfield, f.e. GF(2^8). That limits the maximal length of the code but dramatically increases its decoding ability as we now can easily increase the number of equations for the locator polynomial coefficients by simply raising each equation to the power of the size of the subfield, 2^8. For example, the (256, 248) code can be quite reliably decoded when the number of errors is 7 as opposed to 4 for the analogous Reed-Solomon code. The probability of rejected or wrong decoding at the same time remains negligible, which along with the simplicity of the decoding procedure makes the code interesting from a practical perspective.
Performance improvements that would compromise the simplicity of the implementation have not been attempted. I hope to write up a document (current version) providing a gentle introduction to Reed-Solomon codes, my algorithm, and some extensions.
The project uses Java 8 and Maven (3.3.9), though it doesn't really have any dependencies. To run tests:
mvn test
To create a jar file:
man package
To run tests from jar:
java -jar target/ErrorZ-1.0.0.jar
To build
mkdir -p target/classes
javac -sourcepath src/main/java -d target/classes src/main/java/org/mazurov/errorz/*.java
To test
java -cp target/classes org.mazurov.errorz.Main
ErrorZ is licensed under the Apache License, Version 2.0.
For additional information, see the LICENSE file.