**2.1 Generalised Reed-Solomon codes as cyclic codes**

Another important family of Goppa codes is obtained considering the normal rational curve (NRC) <sup>C</sup>*<sup>n</sup>* defined over *q*:

$$\mathcal{C}^n := \left\{ \mathbb{F}\_q(\mathbf{1}, a, \dots, a^n) : a \in \mathbb{F}\_q \cup \{\infty\} \right\}.$$

Assuming that ð Þ¼ *<sup>n</sup>*, *<sup>p</sup>* 1 are coprime, the set 1, *<sup>α</sup>*, *<sup>α</sup>*2, … , *<sup>α</sup>n*�<sup>1</sup> � � forms a basis of *qn* over *q*, where *p* is the characteristic of the field. Thus points in the NRC are in correspondence with *q*�linear combinations of the base vectors up to collineation. The Goppa codes of dimension *<sup>n</sup>* defined over <sup>C</sup>*<sup>n</sup>* are constructed by evaluating nonzero polynomials of degree less than *n* over a sequence *α*1, … , *α<sup>n</sup>* of *n* distinct elements in *q*, if *k*≤ *n*, then the map

$$\epsilon \colon \mathbb{F}\_q[\mathfrak{x}] \to \mathbb{F}\_q^n, \quad f \mapsto (f(a\_1, \dots, a\_n)) \tag{1}$$

is injective, since the existence of a non-zero polynomial of degree less than *k* vanishing on all *α<sup>i</sup>* implies *n*<*k* by the fundamental theorem of algebra (a non-zero polynomial of degree *r* with coefficients in a field can have at most *r* roots). These are just Reed-Solomon codes of parameters ½ � *n*, *k*, *d* over a finite field *q*, with parity check polynomial *h x*ð Þ¼ <sup>Q</sup>*<sup>q</sup> <sup>i</sup>*¼<sup>1</sup> *<sup>x</sup>* � *<sup>α</sup><sup>i</sup>* � �, where *<sup>α</sup>* is a primitive root of *<sup>q</sup>* such that *<sup>α</sup><sup>k</sup>*þ<sup>1</sup> <sup>¼</sup> *<sup>α</sup>* <sup>þ</sup> 1. Any codeword ð Þ *<sup>c</sup>*0,*c*1, … ,*cn*�<sup>1</sup> can be expanded into a *<sup>q</sup>*-ary *<sup>k</sup>* vector with respect to the basis 1, *α*, … , *α<sup>k</sup>*�<sup>1</sup> � �. Construction of generalised Reed-Solomon codes over *<sup>q</sup>* only employ elements of *q*, hence their lengths are at most *q* þ 1. In order to get longer codes, one can make use of elements of an extension of *q*, for instance considering subfield subcodes of Reed-Solomon codes. In this way, one gets cyclic codes. Recall that a linear cyclic code is an ideal in the ring *q*½ � *<sup>x</sup> <sup>=</sup> <sup>x</sup>*ð Þ *<sup>n</sup>* � <sup>1</sup> generated by a polynomial *g x*ð Þ with roots in the splitting field *<sup>l</sup> <sup>q</sup>* of *xn* � 1, where *<sup>n</sup>*∣*ql* � 1, ([4]). We shall identify the code with the set of its codewords. A natural question then to ask is how many irreducible polynomials of degree at least 2 are there over the algebraic closure of *q*½ � *x* . Next theorem expresses this number in terms of Stirling numbers.

**Theorem 2.2**. *Assume that q*ð Þ¼ , *n* 1*, then the number of polynomials of degree* ð Þ *n*≥2 *decomposable into distinct linear factors over a finite field <sup>q</sup> of arbitrary characteristic a prime number p, is equal to* P*<sup>n</sup> <sup>k</sup>*¼<sup>1</sup>ð Þ*<sup>q</sup> <sup>k</sup>, where q*ð Þ*<sup>k</sup> is the falling factorial polynomial q* � ð Þ *<sup>q</sup>* � <sup>1</sup> … ð Þ¼ *<sup>q</sup>* � *<sup>k</sup>* <sup>P</sup>*<sup>n</sup> <sup>k</sup>*¼<sup>0</sup>*s n*ð Þ , *<sup>k</sup> <sup>q</sup>k, where s n*ð Þ , *<sup>k</sup> is the Stirling number of the first kind (the number of ways to partition a set of n objects into k non-empty subsets), divided by the order of the affine transformation group of the affine line* <sup>1</sup> <sup>¼</sup> 1 <sup>n</sup>∞*, that is q*<sup>2</sup> � *q.*

*Proof.* We need to count all the polynomials *f <sup>n</sup>*ð Þ *x* in one variable of degree *n* fixed. We assume that our polynomial *f <sup>n</sup>*ð Þ *x* decomposes into linear factors, otherwise we work over *q*½ � *x* , where *<sup>q</sup>* denotes the algebraic closure of the finite field *q*. Since the number of ordered sequences on *q* symbols is *q*! and each root is counted with its multiplicity, it follows that the number of monic polynomials with *n* � 1

different roots is *q q*ð Þ � 1 ð Þ *q* � 2 … ð Þ *q* � *n* þ 1 ≔ ð Þ *q* � 2 *<sup>n</sup>*. Now we observe that polynomials are invariant by the action of automorphisms of the affine line, so we must divide this number by the order of this group which is *<sup>q</sup>*<sup>2</sup> � *<sup>q</sup>*. □ **2.2 Algebraic function field codes**

*A Geometrical Realisation of Quasi-Cyclic Codes DOI: http://dx.doi.org/10.5772/intechopen.88288*

finite field as in Goppa's construction.

*equation y<sup>q</sup>* � *<sup>y</sup>* <sup>¼</sup> *xq*<sup>0</sup> *<sup>x</sup>*ð Þ *<sup>q</sup>* � *<sup>x</sup> with q* <sup>¼</sup> <sup>2</sup>*q*<sup>2</sup>

*bound m* >2*g* � 2 *and g is the genus of the curve.*

mial ideals in the variables *x*, *y*, *z*, *w*:

j*a*, *b*,*c*, *d*<sup>0</sup>

þ 1 � � *xn<sup>=</sup>*2ð Þ *<sup>k</sup>*�<sup>1</sup>

*q*

*<sup>n</sup>*∣*p<sup>m</sup>* � 1. In particular *<sup>α</sup>* is a generator of *<sup>p</sup>*

point *<sup>P</sup>*<sup>0</sup> <sup>¼</sup> ð Þ *<sup>α</sup>*, 0 <sup>∈</sup> <sup>2</sup>

associated to the divisor *dP*∞.

*xa yb zc w<sup>d</sup>*<sup>0</sup>

*x<sup>n</sup>=*2*<sup>k</sup>* � 1 � � *xn<sup>=</sup>*2*<sup>k</sup>*

*<sup>P</sup>*<sup>2</sup> <sup>¼</sup> *<sup>β</sup>*<sup>2</sup>

**263**

it corresponds to a point in the Grassmannian G*q*2,*<sup>k</sup> <sup>q</sup>*

≥0, *aq* þ *b q* þ *q*<sup>0</sup>

*power of a prime p and n*, *m are integer numbers greater or equal than 2.*

*p*½ � *<sup>x</sup>* , we get *<sup>x</sup><sup>n</sup>=*<sup>2</sup> � <sup>1</sup> � � *xn<sup>=</sup>*<sup>2</sup> <sup>þ</sup> <sup>1</sup> � � <sup>¼</sup> *<sup>x</sup><sup>n</sup>=*<sup>4</sup> � <sup>1</sup> � � *xn<sup>=</sup>*<sup>4</sup> <sup>þ</sup> <sup>1</sup> � � *<sup>x</sup><sup>n</sup>=*<sup>2</sup> <sup>þ</sup> <sup>1</sup> � � <sup>¼</sup>

curve *<sup>y</sup><sup>m</sup>* <sup>¼</sup> *<sup>x</sup><sup>n</sup>=*<sup>2</sup> <sup>þ</sup> <sup>1</sup> � �. The other rational places are *Pk* <sup>¼</sup> ð Þ *<sup>β</sup>*, 0 with *<sup>β</sup><sup>n</sup>=*2*<sup>k</sup>*

code is realised as the algebraic geometric code associated to the divisors *D* ¼ *P*<sup>0</sup> þ *P*<sup>1</sup> þ … þ *Pk*, *G* ¼ *μP*<sup>∞</sup> and the parameter *μ* satisfies the bound *μ*> 2*g* � 2, where *g* is the genus of the curve C*<sup>n</sup>*,*<sup>m</sup>*. Note that *m* is the least integer such that

� 1 � � *xn<sup>=</sup>*2ð Þ *<sup>k</sup>*�<sup>1</sup>

A much greater variety of linear codes is obtained if one uses places of arbitrary degree rather than just places of degree 1. These codes are more naturally described through function field codes. A general viewpoint is that function field codes are certain finite dimensional linear subspaces of an algebraic function field over a

In the paper [5], the authors introduce another construction where places of arbitrary degree are allowed. The method consists of choosing two divisors *G*<sup>1</sup> and *G*<sup>2</sup> of an algebraic curve over *<sup>q</sup>* with *G*<sup>1</sup> ≤ *G*2. Then Lð Þ *G*<sup>1</sup> is a subspace of the vector space Lð Þ *G*<sup>2</sup> over *q*. If we choose a basis of Lð Þ *G*<sup>2</sup> , then the coordinate vectors of the elements of Lð Þ *G*<sup>1</sup> form a linear code over *<sup>q</sup>* of length *n* ¼ dimð Þ Lð Þ *G*<sup>2</sup> and dimension *k* ¼ dimð Þ Lð Þ *G*<sup>1</sup> . These are known as function field codes and they provide a

**Example 2.** *We consider as in* [7] *the Suzuki curve χ defined over <sup>q</sup> by the following*

<sup>0</sup> <sup>≥</sup><sup>8</sup> *and q*<sup>0</sup> <sup>¼</sup> <sup>2</sup>*<sup>r</sup>*

*. This curve has exactly*

� �. The set of codewords

� � <sup>þ</sup> *<sup>d</sup>*<sup>0</sup> *<sup>q</sup>* <sup>þ</sup> <sup>2</sup>*q*<sup>0</sup> <sup>þ</sup> <sup>1</sup> � �<sup>≤</sup> *<sup>d</sup>*

� �*<sup>q</sup>*<sup>2</sup>

and

*<sup>q</sup>* of

¼ *p* � 1,...,

general perspective on the construction of algebraic-geometry codes [6].

*<sup>q</sup>*<sup>2</sup> <sup>þ</sup> <sup>1</sup>�*rational places with a single place at infinity P*<sup>∞</sup> *and it is of genus gS* <sup>¼</sup> *q*0ð Þ *q* � 1 *: We construct a code out of the divisor F* ¼ *mP*<sup>∞</sup> *and Q where Q* ¼ *<sup>P</sup>*<sup>1</sup> <sup>þ</sup> … <sup>þ</sup> *Pq*<sup>2</sup> *is the sum of the q*<sup>2</sup>�*rational points and the parameter m satisfies the*

Observe that the geometric Goppa code **C**ð Þ *F*, *Q* is an *q*-subspace of *<sup>q</sup>*

its dimension *k* as an *q*�vector space is the dimension of the code. Geometrically,

recognised by the code **C**ð Þ *F*, *Q* admits the following description in terms of mono-

n o,

**Theorem 2.5.** *Cyclic codes are function field codes constructed over the curve* C*<sup>n</sup>*,*<sup>m</sup> with affine equation y<sup>m</sup>* <sup>þ</sup> *xn* <sup>¼</sup> <sup>1</sup> *defined over a finite field <sup>q</sup> of q elements, where q is a*

*Proof.* Let us assume *<sup>n</sup>* is an integer even number, thus *<sup>n</sup>* <sup>¼</sup> <sup>2</sup>*<sup>k</sup>* � *<sup>s</sup>*, with *<sup>s</sup>* an integer odd number. We recall that a linear cyclic code is an ideal in the ring *q*½ � *<sup>x</sup> <sup>=</sup> <sup>x</sup>*ð Þ *<sup>n</sup>* � <sup>1</sup> generated by a polynomial *g x*ð Þ with roots in the splitting field *<sup>l</sup>*

*xn* � 1, where *<sup>n</sup>*∣*q<sup>l</sup>* � 1. If we consider the factorisation of the polynomial *xn* � 1 over

, 0 � �, *<sup>P</sup>*<sup>1</sup> <sup>¼</sup> ð Þ 1, 0 , *<sup>P</sup>*<sup>0</sup> ¼ �ð Þ 1, 0 and the place *<sup>P</sup>*<sup>∞</sup> <sup>¼</sup> ð Þ 0, *<sup>α</sup>* at <sup>∞</sup>. The cyclic

� �*<sup>m</sup>*.

þ 1

� � with *<sup>α</sup><sup>n</sup>=*<sup>2</sup> <sup>¼</sup> *<sup>p</sup>* � 1 is an *q*<sup>2</sup>�rational place of the affine

� � … *<sup>x</sup><sup>n</sup>=*<sup>2</sup> <sup>þ</sup> <sup>1</sup> � �. We see that the

where *<sup>z</sup>* <sup>¼</sup> *<sup>x</sup>*<sup>2</sup>*q*0þ<sup>1</sup> and *<sup>w</sup>* <sup>¼</sup> *xy*<sup>2</sup>*q*<sup>0</sup> � *<sup>z</sup>*<sup>2</sup>*q*<sup>0</sup> are elements in the function field *F<sup>χ</sup>* ≔ *q*ð Þ *x*, *y* over *q*. Moreover, it is a generating set for the linear series Lð Þ *dP*<sup>∞</sup>

� � <sup>þ</sup> *c q* <sup>þ</sup> <sup>2</sup>*q*<sup>0</sup>

Theorem 2.3. *Given a set of integers* f g 0, 1, … , *n* � 1 *module n, there is a set J of k integers which is a set of roots, that is, there is a polynomial h x*ð Þ¼ <sup>Q</sup> *<sup>j</sup>* <sup>∈</sup>*<sup>J</sup> <sup>x</sup>* � *<sup>α</sup><sup>j</sup>* � �*, where α is a generator of pm* � � *for some prime number p and m is the least integer such that <sup>n</sup>*∣*p<sup>m</sup>* � <sup>1</sup>*. The ideal h x*ð Þ *generates in pm* ½ � *<sup>x</sup> <sup>=</sup> <sup>x</sup>*ð Þ *<sup>n</sup>* � <sup>1</sup> *is a cyclic linear code of parameters* ð Þ *n*, *k*, *n* � *k* þ 1 *.*

*Proof.* Let *<sup>m</sup>* be the least integer such that *<sup>n</sup>* divides *<sup>p</sup><sup>m</sup>* � 1, then *<sup>g</sup>:c:d m*ð Þ¼ , *<sup>p</sup>* 1. We define an equivalence relation on the set of integers 0, 1, f g … , *n* � 1 , by declaring two integers *i* and *j* in the range 0 ≤*i*≤ *n* � 1 to be conjugate module *n*

if *p<sup>s</sup> i* � *j* ð Þ mod *n* . This equivalence relation partition the set into cyclotomic cosets. The cyclotomic coset containing *j*, which we will denote by Ω*j*, can be described explicitly as the set *j*, *pj*, … , *pk*�<sup>1</sup>*j* � �, where *k* is the least positive integer such that *<sup>p</sup>kj* � *<sup>j</sup>* ð Þ mod *<sup>n</sup>* and *<sup>j</sup>* is not necessarily the smallest integer in such coset. Denote by *In* the set consisting of the smallest integers in each cyclotomic coset, then *In* is a set root, that is, it is a set of *k* integers in arithmetic progression modulo *n* whose increment is relatively prime to *n*. Let *<sup>d</sup>* <sup>¼</sup> *<sup>n</sup>* � *<sup>k</sup>* <sup>þ</sup> 1, then the polynomial <sup>Q</sup> *<sup>i</sup>*∈*In <sup>x</sup>* � *<sup>α</sup><sup>i</sup>* � � defines a cyclic code of parameters ð Þ *<sup>n</sup>*, *<sup>k</sup>*, *<sup>d</sup>* . □

As an application of Theorem 2.2, given an integer *n*, we can count the number of cyclic codes of parameters ½ � *n*, *k* for each 0 ≤*k*≤*n* and set of roots *α*1, … , *α<sup>k</sup>* in the splitting field of *xn* � 1, the corresponding polynomial *g x*ð Þ¼ <sup>Q</sup>*<sup>k</sup> <sup>i</sup>*¼<sup>1</sup>ð Þ *<sup>x</sup>* � *<sup>α</sup><sup>i</sup>* generates a linear cyclic code in the ring *q*½ � *<sup>x</sup> <sup>=</sup> <sup>x</sup>*ð Þ *<sup>n</sup>* � <sup>1</sup> . Thus for each 0 <sup>≤</sup>*k*≤*<sup>n</sup>* there are exactly ð Þ*<sup>q</sup> <sup>k</sup><sup>=</sup> <sup>q</sup>*ð Þ <sup>2</sup> � *<sup>q</sup>* cyclic codes.

In the theory of error-correcting codes to a given code *C*⊂*<sup>n</sup> <sup>q</sup>*, one assigns another important parameter, the minimum distance *d* which measures how good the decoding is.

**Definition 2.4**. *The distance between vectors a* ¼ ð Þ *a*1, *a*2, … , *an and b* ¼ ð Þ *b*1, *b*2, … , *bn in the Weighted Hamming metric (WHM) is defined by a function:*

$$d\_{WH}(a,b) = \sum\_{i=1}^{n} w\_i \overline{d(a\_i, b\_i)},$$

where *wi* >0, *d ai* ð Þ¼ , *bi* 1 if *ai* 6¼ *bi* and *d ai* ð Þ¼ , *bi* 0 if *ai* ¼ *bi*. The weight of a vector *<sup>a</sup>* in the WHM is *wtWH*ð Þ¼ *<sup>a</sup> dWH*ð Þ¼ *<sup>a</sup>*, 0 <sup>P</sup> *<sup>i</sup>*:*ai*6¼<sup>0</sup>*wi*. The value *wi* and vector *w* ¼ ð Þ *w*1, *w*2, … , *wn* are called a weight of position *i* and a vector of weights of positions respectively.

Geometrically a binary vector ð Þ *a*1, … , *an* of length *n* gives the coordinates of a vertex of a unit cube in *n* dimensions.

**Example 1.** *Consider the Goppa code defined by the rational function g x*ð Þ¼ <sup>3</sup>*x*2�5*x*þ<sup>5</sup> *x*3�2*x*2þ*x which admits as decomposition into partial fractions the expression G x*ð Þ <sup>≔</sup> <sup>5</sup> *<sup>x</sup>* � <sup>2</sup> *<sup>x</sup>*�<sup>1</sup> þ

3 ð Þ *<sup>x</sup>*�<sup>1</sup> <sup>2</sup>*. The presence of a double factor x*ð Þ � <sup>1</sup> <sup>2</sup> *corresponds to the existence of an eigenspace E in the vector space <sup>n</sup> <sup>q</sup> of multiplicity 2 and thus an α*�*splitting subspace where the operator α is just the linear operator A* � *λI, with λ the eigenvalue associated to E and A is the generator matrix of the code. We recall that an r*�*dimensional W subspace is <sup>α</sup>*�*splitting if <sup>α</sup><sup>i</sup> <sup>W</sup>* <sup>¼</sup> *W is invariant under the action of any element <sup>α</sup><sup>i</sup> in the Galois group of the extension <sup>q</sup>* ↣ *q*ð Þ *α* .
