I am interested on the analysis of the Reed-Solomon capabilities for detection (detection only, when correction is not possible), in particular for RS(10,8), with symbol 8 bits, 10 symbols total in a codeword, out of which 8 are for data and 2 for ECC. In this case the Reed-Solomon code should be able to correct 1 symbol with multiple errors, but in the literature I don't find much information on the error detection capability (with no correction), for example with 2 errors in 2 different symbols the RS should be able to detect but not correct.
I would like to do some Montecarlo analysis in Python, I have found this package for Reed-Solomon: https://pypi.org/project/unireedsolomon/
the python package allows me to create the RS code, inject error and decode with correction, but it does not seem to provide detection capability, I tried to inject 2 errors in two different symbol and I get a miss-correction, I believe that in this case the Reed-Solomon should be able to report an error that cannot be corrected. The unireedsolomon package does not seem to have implemented such detection capability, or maybe I am wrong. Do you know if such capability exist in the unireedsolomon package?
Or do you have suggestions on how I can run such detection only analysis maybe with a different python package? Or any comment about the detection in the Reed-Solomon code would be useful too. Thank you
The Reed-Solomon code
RS(10,8)
hasd_min = n-k+1 = 3
minimum distance. A code with minimum distanced_min
can correctt = floor((d_min-1) / 2)
symbol errors or detectd_min-1
symbol errors. So the code you described can detect 2 symbol errors.The algebraic structure of the code ensures that all valid codewords with
d_min-1
or fewer errors will result in a syndrome not equal to zero (which is the indicator there are errors).I created a Python package galois that extends NumPy arrays over Galois fields. Since algebraic FEC codes are closely related, I included them as well. Reed-Solomon codes are implemented, as well as a
detect()
method.Here is an example of the
RS(10,8)
code usinggalois
. In my library, shortened codesRS(n-s,k-s)
are used by first creating the full codeRS(n,k)
and then passingk-s
message symbols intoencode()
orn-s
symbols intodecode()
ordetect()
.