# Reed-Solomon: a combination of error correction and detection in the CD CIRC algorithm

It's well known that, with 4 redundant symbols, a Reed-Solomon decoder can either correct 2 incorrect or detect 4 incorrect symbols. In "The Compact Disc Digital Audio System: Modulation and Error Correction", Immink discusses the CIRC decoding algorithm that is used CD players. It has 2 cascaded Reed-Solomon encoders, with an interleaver in between. Each encoder adds 4 redundant symbols.

He states the following:

In this set up, the C1 decoder words as a single error correcting, not a double error correcting device.

The reason for not making use of the full error correcting capability of the code is, that its detecting capability for uncorrectable errors gets very high. If more than one symbol is in error, then regardless of the number of errors, the probability that this word shall not be detected by the decoder as being uncorrectable is accurately approximated by some formula = 1.91E-6 (except for 2 and 3 errors with will definitely be detected.)

The paper goes on to explain how giving up the error correcting capability of one symbol in exchange for error detection allows for correcting more packets by the second R-S decoder thanks to interleaving and erasure decoding.

I'd like to focus on the very first part of the sentence: using 4 redundant symbols to correct 1 symbol and to detect errors. How does that work exactly? Literature always seems to discuss how one can do either correction or detection, but combination.

Here's one way how I think this can work:

• Start with a vector (W[0:27], E[0:3]): the original message word of 28 symbols and 4 error correcting/detecting symbols.
• Select 2 symbols E[0:1] for error correction and symbols E[2:3] for detection.
• Use one of the standard R-S error correction algorithms to transform (W[0:27], E[0:1]) into (W'[0:27], E'[0:1])
• Now use E[2:3] to detect up to 2 errors in the W'[0:27]. Or should that be (W'[0:27], E'[0:1]) ?

Is that the best we can do?

I arbitrarily chose 2 symbols E[0:1] and E[2:3] for correction and detection, but are there ways to improve one this? For example, would there be any benefits in doing the error correction algorithm multiple times, using different (or all) combinations of picking 2 symbols out of E[0:3]? Intuitively, I think that's not the case, but I can't quite reason my way out of this?

• Your question is essentially unanswerable because the premises are not correct. Reed-Solomon decoders don't work the way you envision. Aug 30, 2023 at 16:20
• Which part of my premise is not correct? And even if my understanding is indeed incorrect, how would you implement the solution proposed by Immink? Aug 31, 2023 at 14:16
• I’m not nearly at the point of answering the question myself, but here’s a good start: mastodon.social/@destevez/110985428276938468 Aug 31, 2023 at 20:35