Skip to main content

Handout GRS & RS Codes

This handout collects the various definitions and facts about GRS and RS codes for reference as you work on problems.

Definition 72. GRS Codes.

Let \(F=\GF(q)\text{.}\) The code locators are \(\balpha=(\alpha_1,\ldots,\alpha_n)\) a set of distinct non-zero elements of \(F\text{.}\) The column multipliers are \(\bv=(v_1,\ldots,v_n)\) a set of non-zero (possibly repeated) elements of \(F\text{.}\) Then the generalized Reed Solomon code \(\GRS_{n,k}(\balpha,\bv)\) is the \([n,k,n-k+1]_q\) code with canonical parity-check matrix
\begin{equation*} H_{\mathrm{GRS}} = \begin{bmatrix} 1 \amp 1 \amp \ldots \amp 1 \\ \alpha_1 \amp \alpha_2 \amp \ldots \amp \alpha_n \\ \vdots \amp \vdots \amp \vdots \amp \vdots \\ \alpha_1^{n-k-1} \amp \alpha_2^{n-k-1} \amp \ldots \amp \alpha_n^{n-k-1} \end{bmatrix}\begin{bmatrix} v_1 \amp 0 \amp \ldots \amp 0 \\ 0 \amp v_2 \amp \ldots \amp 0 \\ \vdots \amp \vdots \amp \ddots \amp \vdots \\ 0 \amp 0 \amp\ldots \amp v_n \end{bmatrix}\text{.} \end{equation*}
\(\GRS_{n,k}(\balpha,\bv)\) is called singly-extended if one of the code locators is allowed to be \(0\text{,}\) primitive if \(n=q-1\) (so that the code locators are \(F^*\)), narrow-sense if the column multipliers are equal to the code locators i.e. \(v_i=\alpha_i\text{,}\) and normalized if \(v_i=1\text{.}\)
The canonical generator matrix is
\begin{equation*} G_{\GRS} = \begin{bmatrix} 1 \amp 1 \amp \ldots \amp 1 \\ \alpha_1 \amp \alpha_2 \amp \ldots \amp \alpha_n \\ \vdots \amp \vdots \amp \vdots \amp \vdots \\ \alpha_1^{k-1} \amp \alpha_2^{n-1} \amp \ldots \amp \alpha_n^{k-1} \end{bmatrix}\begin{bmatrix} u_1 \amp 0 \amp \ldots \amp 0 \\ 0 \amp u_2 \amp \ldots \amp 0 \\ \vdots \amp \vdots \amp \ddots \amp \vdots \\ 0 \amp 0 \amp\ldots \amp u_n \end{bmatrix} \end{equation*}
where \(u_i^{-1}=v_i \prod_{j\neq i}(\alpha_i-\alpha_j)\text{.}\) When the code is primitive this simplifies to \(u_i=\alpha_i/v_i\text{.}\)

Definition 73. RS Codes.

Let \(F=\GF(q), n \mid q-1, b\in \Z\text{.}\) Fix an element \(\alpha \in F\) with \(|\alpha|=n\text{.}\) Then the Reed-Solomon code \(\RS_{n,k}(\alpha)\) is \([n,k,n-k+1]_q\) code \(\GRS_{n,k}(\balpha,\bv)\) with
\begin{equation*} \alpha_j=\alpha^{j-1} \quad v_j=\alpha^{b(j-1)},\qquad 1\leq j \leq n\text{.} \end{equation*}
It has canonical parity check matrix
\begin{equation*} H_{\RS} = \begin{bmatrix} 1 \amp \alpha^b \amp \ldots \amp \alpha^{b(n-1)} \\ 1 \amp \alpha^{b+1} \amp \ldots \amp \alpha^{(b+1)(n-1)} \\ \vdots \amp \vdots \amp \vdots \amp \vdots \\ 1 \amp \alpha^{b+d-2} \amp \ldots \amp \alpha^{(b+d-2)(n-1)} \\ \end{bmatrix}\text{.} \end{equation*}
The roots of the code are \(\{\alpha^b,\alpha^{b+1},\ldots,\alpha^{b+d-2}\}\text{.}\) The generator polynomial is
\begin{equation*} g(x)=\prod_{i=0}^{d-2} (x-\alpha^{b+i})\text{.} \end{equation*}
We have \(\bc\in \RS_{n,k}(\alpha)\) if and only if \(g(x)\mid c(x)\) where \(c(x)\) is the polynomial in \(F[x]\) with \(\bc\) as its coefficient vector.
Table 74. Representation of \(\GF(2^3)\) as \(\mathbb{F}_2[\beta]/(\beta^3+\beta+1)\)
Power of \(\beta\) Field Element Coordinates
\(-\infty\) \(0\) 000
\(\beta^0\) \(1\) 100
\(\beta^1\) \(\beta\) 010
\(\beta^2\) \(\beta^2\) 001
\(\beta^3\) \(1+\beta \) 110
\(\beta^4\) \(\beta + \beta^2\) 011
\(\beta^5\) \(1 + \beta + \beta^2\) 111
\(\beta^6\) \(1+\beta^2 \) 101