diff --git a/README.md b/README.md index ea2e854..f6bb6fa 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ If we want to correct $e$ byte-errors, we will need $n = 2e$ fixed points. We can construct a generator polynomial $P(x)$ with $n$ fixed points at $g^i$ where $i < n$ like so: -$$ +$$ \\ P(x) = \prod_{i=0}^n \left(x - X_i\right) $$ @@ -123,19 +123,27 @@ We could choose any arbitrary set of fixed points, but usually we choose $g^i$ where $g$ is a [generator][generator] in GF(256), since it provides a convenient mapping of integers to unique non-zero elements in GF(256). -Note that for any fixed point $g^i$, $x - g^i = g^i - g^i = 0$. And -since multiplying anything by zero is zero, this will make our entire +Note that for any fixed point $g^i$: + +$$ \\ +\begin{aligned} +x - g^i &= g^i - g^i \\ + &= 0 +\end{aligned} +$$ + +And since multiplying anything by zero is zero, this will make our entire product zero. So for any fixed point $g^i$, $P(g^i)$ should also evaluate to zero: -$$ +$$ \\ P(g^i) = 0 $$ This gets real nifty when you look at the definition of our Reed-Solomon code for codeword $C(x)$ given a message $M(x)$: -$$ +$$ \\ C(x) = M(x) x^n - (M(x) x^n \bmod P(x)) $$ @@ -144,7 +152,7 @@ gives us a polynomial that is a multiple of $P(x)$. And since multiplying anything by zero is zero, for any fixed point $g^i$, $C(g^i)$ should also evaluate to zero: -$$ +$$ \\ C(g^i) = 0 $$ @@ -163,9 +171,11 @@ $$ Check out what happens if we plug in our fixed point, $g^i$: $$ -C'(g^i) = C(g^i) + E(g^i) - = 0 + E(g^i) - = E(g^i) +\begin{aligned} +C'(g^i) &= C(g^i) + E(g^i) \\ + &= 0 + E(g^i) \\ + &= E(g^i) +\end{aligned} $$ The original codeword drops out! Leaving us with an equation defined only