JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
Coding Theory 1960

Polynomial Codes over Certain Finite Fields

Irving S. Reed & Gustave Solomon

Send extra samples of a polynomial, and the whole message survives even when some arrive wrong.

Choose your version
In depth · the introduction

Scratch a CD, tear part of a QR code, lose a packet from a probe four billion kilometres away — and the message still comes through intact. That near-magic is Reed–Solomon.

The idea, unpacked

The trick is to send your message as a curve rather than as a list. Take your data and treat it as the recipe for a smooth mathematical curve, then send not the recipe but a string of points read off that curve — more points than you strictly need to draw it.

Now suppose some of those points get smudged in transit. Because the curve is gentle and you sent extra points, the receiver can see that most of the points still line up on one curve, with a few outliers poking off it. There is only one smooth curve that fits the majority — so the outliers are spotted, snapped back into place, and the original message is rebuilt. The more spare points you send, the more damage you can shrug off.

Two engineers, ahead of the machines

In 1960, Irving Reed and Gustave Solomon, working at MIT's Lincoln Laboratory, published a four-page paper describing this scheme. It was elegant and provably optimal — but there was a catch: nobody yet knew how to actually find and fix the errors quickly in a long message. For a few years it was a beautiful idea waiting for a method. Then the decoders arrived — Peterson, then Berlekamp and Massey in 1967 — and the floodgates opened. By the time the compact disc launched in the 1980s and Voyager sailed past the planets, Reed–Solomon was quietly doing the work, and it has never stopped.

Why it mattered

Shannon had proved in 1948 that you could communicate almost perfectly over a noisy channel — but his proof did not say how. Reed–Solomon was one of the first codes strong enough and cheap enough to actually deliver on that promise at scale, and uniquely good at the kind of damage that comes in clumps: a scratch, a dust speck, a fading radio signal. It is the reason your scratched disc still plays and your half-obscured QR code still scans. Without it, digital storage and communication as we know them would be far more fragile.

Two points make a line

Remember that two points determine a straight line, and three points a parabola. If someone hands you five points that are supposed to lie on a line and one of them is clearly off, you don't need to be told which — the four that agree define the line, and the stray one stands out and can be corrected. Reed–Solomon is exactly this, scaled up: send many points of a curve, and a few wrong ones can never disguise themselves, because they cannot all fall back onto one low, smooth curve.

A smooth curve (the message) is shown with sample points on it as blue dots. One slider sets how short the message is (and so how many spare points there are); another slider knocks dots off the curve, shown in red. While only a few are knocked off, the original curve is the only one that fits the rest and is redrawn in green; knock off too many and the recovery fails.

Before and after

Claude Shannon (1948) proved reliable communication over noise was possible; Richard Hamming (1950) built the first practical code that corrected single bit errors. Reed–Solomon took the next step, correcting whole symbols and clustered bursts, and became the most widely used error-correcting code in history. The decoding algorithms (Berlekamp–Massey, 1967) and the later list-decoding results extended it further. In this Library it sits between Shannon's promise and the storage and networks that now rely on keeping data perfect.

The original document
Original source text
Irving S. Reed & Gustave Solomon · “Polynomial Codes over Certain Finite Fields” · Journal of the Society for Industrial and Applied Mathematics 8(2): 300–304 · June 1960
The construction
(Paraphrase.) Take a message as a block of k symbols drawn from a finite field — a finite arithmetic in which add, subtract, multiply and divide all stay inside the set. Read those k symbols as the coefficients of a polynomial of degree less than k. The codeword is not the coefficients themselves but the VALUES of that polynomial, evaluated at n distinct points of the field. With n larger than k, the message is sent as more numbers than it contains — a curve described by far more samples than are needed to draw it.
The theorem
(Paraphrase.) Any k of the n values suffice to reconstruct the degree-(k−1) polynomial and hence the message, just as two points fix a straight line. So up to n−k lost symbols (erasures) can be filled back in. And because two different low-degree codewords must disagree in at least n−k+1 of their n places, up to t = ⌊(n−k)/2⌋ symbols may be silently WRONG and still be located and corrected. That minimum distance, d = n−k+1, is the largest any code can achieve for the same n and k — the Singleton bound — so Reed–Solomon codes are “maximum distance separable.”
What it left open
(Paraphrase.) The 1960 paper established the code and its distance, but not a practical way to find and fix the errors in a long block; brute force was hopeless for the sizes that matter. Efficient decoding came soon after — Peterson (1960), then the Berlekamp–Massey algorithm (1967) and Forney's error evaluator (1965) — and only then did the code become usable at scale.
[ … ]
Lincoln Laboratory · 1960