You are on page 1of 4

# Galois Field Computation in MATLAB:

Primitive Polynomial:
An Irreducible polynomial p(X) of degree m is said to be primitive if the
smaller positive integer n for which p(X) divides Xn + 1 is n = 2m – 1. For
example, p(X) = X4 + X + 1 divides X15 +1 but not divides any Xn +1 for
1 ≤ n < 15.

In Matlab you can easily find the primitive polynomials for any degree
using primpoly(m) function.

Example:
m= 4; Define m = 4 for GF(24)
s = primpoly(m)

Output is:
Primitive polynomial(s) =

D^4+D^1+1

s =

19

## Here it shows the primitive polynomial and an integer whose binary

representation indicates the coefficients of the polynomial. Note that there
could be more than one primitive polynomial for a particular degree of m.

## Galois Field arithmetic:

To demonstrate Galois Field arithmetic we consider following table for
degree m = 4 an primitive polynomial p(X) = 1 + X + X4

## Power Representation Polynomial Represent 4-Tuple Representation

0 0 0 0 0 0
1 1 1 0 0 0
α α 0 1 0 0
α2 α 2
0 0 1 0
α3 α3 0 0 0 1
α4 1+ α 1 1 0 0
α5 α+α 2
0 1 1 0
α6 2
α +α 3
0 0 1 1
α7 1+ α + α 3
1 1 0 1
α8 1 + α2 1 0 1 0
α9 α+α 3
0 1 0 1
α10 1+ α + α 2
1 1 1 0
α11 α + α2 + α3 0 1 1 1
α12 1 + α + α2 + α3 1 1 1 1
α13 1 + α2 + α3 1 0 1 1
α14 1 + α3 1 0 0 1

## The Matlab function gftuple(),Simplify or convert the format of elements of

a Galois field. That means, you can find the tuple representation of
corresponding power representation by gftuple() function.

Example:
X = gftuple(11,4);
Y= gftuple(14,4);

## The output is:

X =

0 1 1 1

Y =

1 0 0 1

In Matlab you can do any Galois Field arithmetic using gf() function.

Example:
X = gf(6,4) % first argument is integer equivalent of tuple
% representation and 2nd argument is degree m
Y = gf(13,4)
Z = X + Y

Array elements =

## Y = GF(2^4) array. Primitive polynomial = D^4+D+1 (19 decimal)

Array elements =

13
Z = GF(2^4) array. Primitive polynomial = D^4+D+1 (19 decimal)

Array elements =

11

## Note: The array elements are shown in tuple representation format. To

understand it you may need to convert from tuple representation to power
representation from the table.

## In the above example we did the addition of α5 + α7, which is α13.

Similarly you ca do multiplication, division or subtraction.

Minimal polynomials

## Minimal polynomials of elements in GF(24) generated by p(X) = X4 + X+ 1

are given in following table.

## Conjugate Roots Minimal polynomials Ф(X)

0 X
1 X+1
α, α , α4, α8
2
X4 + X + 1
α3, α6, α9, α12 X4 + X3 + X + 1
α5, α10 X2 + X + 1
α7, α11, α13, α14 X4 + X3 + 1

## By using minpol() function in matlab you can genetare the minimal

polynomial for any root. Again using roots() function you can find the
conjugate roots for a particular minimal polynomial.

Example:

m = 4;
e = gf(6,4);
em = minpol(e) %Find minimal polynomial of e. em is in
%GF(2^m)

## The output is:

em = GF(2) array.

Array elements =

0 0 1 1 1
emr = GF(2^4) array. Primitive polynomial = D^4+D+1 (19
decimal)

Array elements =

9
11
13
14

## For BCH codes generator polynomials can be calculated by following

equation as

g(X) = LCM{ Ф1(X), Ф3(X), Ф5(X), Ф7(X)…… Ф2t-1(X)} where Фi(X) are the
minimal polynomials.

Now for m = 4, we can calculate the generator polynomial for (15, 11),
(15, 7) and (15, 5) BCH codes as following:
g1(X) = Ф1(X) for (15, 11) BCH code, t = 1
g2(X) = LCM{ Ф1(X), Ф3(X)} for (15, 7) BCH code, t = 2
g3(X) = LCM{ Ф1(X), Ф3(X), Ф5(X)} for (15, 5) BCH code, t = 3

## In matlab you can easily generate the generator polynomial by using

bchgenpoly() function.

Example:
genpoly1 = bchgenpoly(15,11)
genpoly2 = bchgenpoly(15,7)

Array elements =

1 0 0 1 1

## genpoly = GF(2) array.

Array elements =

1 1 1 0 1 0 0 0 1

Now you can shift this generator polynomial using circshift() command
to create the generator matrix and encode the message block by block.