quality:corruption
Properties

The Reed–Solomon code is a code; in other words, it is a linear block code of length n (over F) with dimension k and minimum Hamming distance d min = n − k + 1. {\textstyle d_{\min }=n-k+1.} The Reed–Solomon code is optimal in the sense that the minimum distance has the maximum value possible for a linear code of size (n, k); this is known as the Singleton bound. Such a code is also called a maximum distance separable (MDS) code.

The error-correcting ability of a Reed–Solomon code is determined by its minimum distance, or equivalently, by n − k {\displaystyle n-k}, the measure of redundancy in the block. If the locations of the error symbols are not known in advance, then a Reed–Solomon code can correct up to (n − k) / 2 {\displaystyle (n-k)/2} erroneous symbols, i.e., it can correct half as many errors as there are redundant symbols added to the block. Sometimes error locations are known in advance (e.g., "side information" in demodulator signal-to-noise ratios)—these are called erasures. A Reed–Solomon code (like any MDS code) is able to correct twice as many erasures as errors, and any combination of errors and erasures can be corrected as long as the relation 2 E + S ≤ n − k is satisfied, where E {\displaystyle E} is the number of errors and S {\displaystyle S} is the number of erasures in the block.

The theoretical error bound can be described via the following formula for the AWGN channel for FSK: P b ≈ 2 m − 1 2 m − 1 1 n ∑ ℓ = t + 1 n ℓ (n ℓ) P s ℓ (1 − P s) n − ℓ {\displaystyle P_{b}\approx {\frac {2^{m-1}}{2^{m}-1}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }} and for other modulation schemes: P b ≈ 1 m 1 n ∑ ℓ = t + 1 n ℓ (n ℓ) P s ℓ (1 − P s) n − ℓ {\displaystyle P_{b}\approx {\frac {1}{m}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }} where t = 1 2 (d min − 1) {\textstyle t={\frac {1}{2}}(d_{\min }-1)}, P s = 1 − (1 − s) h {\displaystyle P_{s}=1-(1-s)^{h}}, h = m log 2 M {\displaystyle h={\frac {m}{\log _{2}M}}}, s {\displaystyle s} is the symbol error rate in uncoded AWGN case and M {\displaystyle M} is the modulation order.

For practical uses of Reed–Solomon codes, it is common to use a finite field F {\displaystyle F} with 2 m {\displaystyle 2^{m}} elements. In this case, each symbol can be represented as an m {\displaystyle m} -bit value.The sender sends the data points as encoded blocks, and the number of symbols in the encoded block is n = 2 m − 1 {\displaystyle n=2^{m}-1}. Thus a Reed–Solomon code operating on 8-bit symbols has n = 2 8 − 1 = 255 {\displaystyle n=2^{8}-1=255} symbols per block. (This is a very popular value because of the prevalence of byte-oriented computer systems.) The number k {\displaystyle k}, with k < n {\displaystyle k<n}, of data symbols in the block is a design parameter. A commonly used code encodes k = 223 {\displaystyle k=223} eight-bit data symbols plus 32 eight-bit parity symbols in an n = 255 {\displaystyle n=255} -symbol block; this is denoted as a (n, k) = (255, 223) {\displaystyle (n,k)=(255,223)} code, and is capable of correcting up to 16 symbol errors per block.

The Reed–Solomon code properties discussed above make them especially well-suited to applications where errors occur in bursts. This is because it does not matter to the code how many bits in a symbol are in error — if multiple bits in a symbol are corrupted it only counts as a single error. Conversely, if a data stream is not characterized by error bursts or drop-outs but by random single bit errors, a Reed–Solomon code is usually a poor choice compared to a binary code.

The Reed–Solomon code, like the convolutional code, is a transparent code. This means that if the channel symbols have been inverted somewhere along the line, the decoders will still operate. The result will be the inversion of the original data. However, the Reed–Solomon code loses its transparency when the code is shortened (see 'Remarks' at the end of this section). The "missing" bits in a shortened code need to be filled by either zeros or ones, depending on whether the data is complemented or not. (To put it another way, if the symbols are inverted, then the zero-fill needs to be inverted to a one-fill.) For this reason it is mandatory that the sense of the data (i.e., true or complemented) be resolved before Reed–Solomon decoding.

Whether the Reed–Solomon code is cyclic or not depends on subtle details of the construction. In the original view of Reed and Solomon, where the codewords are the values of a polynomial, one can choose the sequence of evaluation points in such a way as to make the code cyclic. In particular, if α {\displaystyle \alpha } is a primitive root of the field F {\displaystyle F}, then by definition all non-zero elements of F {\displaystyle F} take the form α i {\displaystyle \alpha ^{i}} for i ∈ { 1, …, q − 1 } {\displaystyle i\in \{1,\dots,q-1\}}, where q = | F | {\displaystyle q=|F|}. Each polynomial p {\displaystyle p} over F {\displaystyle F} gives rise to a codeword (p (α 1), …, p (α q − 1)) {\displaystyle (p(\alpha ^{1}),\dots,p(\alpha ^{q-1}))}. Since the function a ↦ p (α a) {\displaystyle a\mapsto p(\alpha a)} is also a polynomial of the same degree, this function gives rise to a codeword (p (α 2), …, p (α q)) {\displaystyle (p(\alpha ^{2}),\dots,p(\alpha ^{q}))}; since α q = α 1 {\displaystyle \alpha ^{q}=\alpha ^{1}} holds, this codeword is the cyclic left-shift of the original codeword derived from p {\displaystyle p}. So choosing a sequence of primitive root powers as the evaluation points makes the original view Reed–Solomon code cyclic. Reed–Solomon codes in the BCH view are always cyclic because BCH codes are cyclic.