Next: Double-Error Correcting BCH Codes
Up: BCH Codes
Previous: Cyclic Bounds
  Contents
We are now ready to define single error-correcting BCH
codes. In fact, it can be proven thata single error-correcting BCH
code is isomorphic to a Hamming Code, which is a single error
correcting linear code. Further, we will assume know that the
codelength
, so we have what is considered a primitive BCH
code. In this way, we will better be able to decode single errors.
We want to construct codes of length
over a finite field
. Start by factoring
into irreducibles over
.
If
is not seperable in
, extend
to
and write
where
are the
distinct roots of unity in the
extension of
. Each of the powers of
is also a root of
some
. Then for each
, define
to be the
polynomial
such that
Notice that each of the
are the minimal polynomials for
and that they need
not be distinct. This follows since
and
may
have the same minimal polynomial.
Definition 10
A BCH code of length

with designed distance

is a code with generating
polynomial
for some integer

.
Here is an example of finding a generating polynomial for
such a code. Let
and let
. We start by factoring
over
to get
Then of all the roots
we must determine which is a
primitive
root of unity. That means there is some element
such that
and
for
. The root 2
satisfies this condition. Let
. Thus the
are
labeled as follows
since
Now suppose we were looking for a code of distance
. We can choose
arbitrarlily, so let
. So the generating polynomial of
is

lcm
or
Then the first row of the generating matrix is the row vector
Because we have defined a BCH code to be cyclic we get the complete
generating matrix from cyclic shifts of the generating code vector.
which is a cyclic
code.
We now must prove that this BCH code has minimum weight at least
.
Theorem 6
A BCH code of designed distance

has minimum weight at least

Proof.
Since

divides

for

, and

, we have
Letting

and

, theorem 4 thus gaurantees that the
minimum weight is at least

.
In the previous example the weight of the first row vector
was 3, and since it is a cyclic code we know that the minumum weight
is exactly 3. So theorem 4 tells us the exact minimum weight since
.
One of the advantages of this type of code is that there is a
relatively simple way to decode.
Let
be a BCH code with designed distance
. Then
is a
cyclic code of some length
with a generating polynomial
.
By Theorem 5, there is a an
such that
for some integer
.
Let
be a
Vandermonde matrix. Here is where the nice structure
of cyclic codes comes into play. If
corresponds to a codeword in
we
know that
and so
Because a Vandermonde matrix can easily be used in the technique of
polynomial interpolation we can solve the following linear system
Therefore, any codeword received without an error will be a solution
to this system. If a codeword is received with a single error it will not
be a solution to the system. A received message with more than one
error could be a solution since parity could still exists and the null
space of the matrix may properly contain the codespace of
. Here
is how the system can correct the single error.
Assume that a message
is received with
where
. Write
which is the syndrome
as previously defined.
Thus
because the inner product of any code vector with
equals zero.
Similarly,
Since the error vector has only a single nonzero entry in the
th
spot, we know that

and
So the error is in the
th entry and is the
st power of the
th root of unity
.
If we are working over the binary field
then we are done
because we know that
. Simply change the
th entry in the
message
from zero to one, or one to zero.. Now what if we are
working over another finite field?
Then
is still the
st power of
. We then know that the error vector is
and we can subtract this error vecor from the received codeword
to
get the original codeword
.
What about correcting multiple errors? Lets first consider a
double-error correcting code.
Next: Double-Error Correcting BCH Codes
Up: BCH Codes
Previous: Cyclic Bounds
  Contents
2002-03-30