# BCH Codes and Reed-Solomon Codes

Started by March 26, 2004
```Does any one know of any research which attempts to analytically determine
the the binary codeword subspace (BCH code) of a Reed-Solomon code, that is
the binary vector subspace of a subspace of GF(2^m - 1)^n?
--
%  Randy Yates                  % "My Shangri-la has gone away, fading like
%% Fuquay-Varina, NC            %  the Beatles on 'Hey Jude'"
%%% 919-577-9882                %
%%%% <yates@ieee.org>           % 'Shangri-La', *A New World Record*, ELO
```
```Every Reed-Solomon code contains a binary BCH code as
a subspace.  Recall that the codeword polynomials of
a t-error-correcting Reed-Solomon code have 2t
consecutive powers of alpha as roots.  The codeword
polynomials from a binary t-error-correcting BCH code
(defined in terms of these same consecutive powers)
also have all these 2t roots (and their conjugates
as well!).  So the answer to Randy's question is
striaghtforward.  But perhaps he meant to ask about
the codewords that one would get by looking at, say,
the first bit of each m-bit symbol in a Reed-Solomon
codeword?  That's a much more complicated problem since
the answer depends in part on the basis used to represent
the field.  The book by MacWilliams and Sloane has some
discussion of this problem.  More recent work is by
C. T. Retter published in the IEEE Transactions on
Information Theory.

Hope this helps

--Dilip Sarwate
```
```Dilip Sarwate <sarwate@uiuc.edu> writes:

> Every Reed-Solomon code contains a binary BCH code as
> a subspace.

Hmm. Well, how about the (26, 21) Reed Solomon code
constructed from GF(3^3) with minimum distance 5?

Further, even if you construct it from GF(2^m), how
are you guaranteed that there are ANY binary codewords
(other than the trivial codeword)?

> Recall that the codeword polynomials of
> a t-error-correcting Reed-Solomon code have 2t
> consecutive powers of alpha as roots.  The codeword
> polynomials from a binary t-error-correcting BCH code
> (defined in terms of these same consecutive powers)
> also have all these 2t roots (and their conjugates
> as well!).  So the answer to Randy's question is
> striaghtforward.

> But perhaps he meant to ask about
> the codewords that one would get by looking at, say,
> the first bit of each m-bit symbol in a Reed-Solomon
> codeword?

I'm not sure why there's confusion here. As I understand it, BCH codes
are the subclass of Reed-Solomon codes constructed from GF(2^m) in
which every codeword is binary, i.e., consists only of vectors with
elements from the subfield GF(2). That seems to be what you say above,
but that's true by definition for a BCH code.

> That's a much more complicated problem since
> the answer depends in part on the basis used to represent
> the field.  The book by MacWilliams and Sloane has some
> discussion of this problem.  More recent work is by
> C. T. Retter published in the IEEE Transactions on
> Information Theory.

Retter - thanks Dilip.
--
%  Randy Yates                  % "Midnight, on the water...
%% Fuquay-Varina, NC            %  I saw...  the ocean's daughter."
%%% 919-577-9882                % 'Can't Get It Out Of My Head'
%%%% <yates@ieee.org>           % *El Dorado*, Electric Light Orchestra
```
```Randy Yates <yates@ieee.org> writes:
> [...]
> Hmm. Well, how about the (26, 21) Reed Solomon code
> constructed from GF(3^3) with minimum distance 5?

Wups! That should be the (26, 22) RS code.
--
%  Randy Yates                  % "...the answer lies within your soul
%% Fuquay-Varina, NC            %       'cause no one knows which side
%%% 919-577-9882                %                   the coin will fall."
%%%% <yates@ieee.org>           %  'Big Wheels', *Out of the Blue*, ELO
```
```
Randy Yates wrote:
>
> Dilip Sarwate <sarwate@uiuc.edu> writes:
>
> > Every Reed-Solomon code contains a binary BCH code as
> > a subspace.
>
> Hmm. Well, how about the (26, 21) Reed Solomon code
> constructed from GF(3^3) with minimum distance 5?

Randy:

Stop nitpicking!  Your original question was about
binary subcodes of a Reed-Solomon code over GF(2^m),
which is the question that I answered.  A more general
statement would have been "Every Reed-Solomon code
over GF(p^m) contains a BCH code over GF(p)."

> Further, even if you construct it from GF(2^m), how
> are you guaranteed that there are ANY binary codewords
> (other than the trivial codeword)?
>

If the generator polynomial of Reed-Solomon code does
not have 1 as a root, then we are guaranteed that the
all-ones vector is a codeword in the Reed-Solomon code
as well as the BCH subcode.  More generally, if the
rate is low enough, the BCH subcode might be just the
repetition code consisting of the all-zero and all-one
vectors.  Nitpickers are reminded that in the case of
GF(p), p > 2, the repetition code will have p codewords:
the all-zero, all-one, all-two, .... , all-(p-1).

--Dilip Sarwate
```
```Dilip Sarwate <sarwate@uiuc.edu> writes:

> Randy Yates wrote:
> >
> > Dilip Sarwate <sarwate@uiuc.edu> writes:
> >
> > > Every Reed-Solomon code contains a binary BCH code as
> > > a subspace.
> >
> > Hmm. Well, how about the (26, 21) Reed Solomon code
> > constructed from GF(3^3) with minimum distance 5?
>
> Randy:
>
> Stop nitpicking!

Dilip:

I can see how this would be viewed as nitpicking to someone who has
studied the subject for decades and is comfortable with the
terminology and theory. However, I am a beginner and, having only
discussed it thus far within the confines of my classmates and
professor, am still a bit unsure of the lingo and common assumptions.
Please try to keep that in mind before criticizing me.

> A more general
> statement would have been "Every Reed-Solomon code
> over GF(p^m) contains a BCH code over GF(p)."

"A BCH code over GF(p)" is a contradiction according to the way it has
been presented to me. A BCH code is, BY DEFINITION, a BINARY code,
according to my notes.

Further, I thought the key reason we are interested in BCH codes is
that, due to their binary nature, the decoder can be implemented by
finding the error-locator polynomial alone (e.g., using the
Berlekamp-Massey algorithm) without requiring the error magnitudes
(e.g., via the Forney algorithm) to be computed. This, combined with
the maximum-distance separable and easily-specified minimum distance
properties, makes them practically interesting, I thought.

> > Further, even if you construct it from GF(2^m), how
> > are you guaranteed that there are ANY binary codewords
> > (other than the trivial codeword)?
>
> If the generator polynomial of Reed-Solomon code does
> not have 1 as a root, then we are guaranteed that the
> all-ones vector is a codeword in the Reed-Solomon code
> as well as the BCH subcode.

That is something we hadn't been shown.

> More generally, if the
> rate is low enough, the BCH subcode might be just the
> repetition code consisting of the all-zero and all-one
> vectors.  Nitpickers are reminded that in the case of
> GF(p), p > 2, the repetition code will have p codewords:
> the all-zero, all-one, all-two, .... , all-(p-1).

Please note that this attitude contributes absolutely zero to
encouraging discussion and learning on the subject. The fact
that you're an expert in it is great. However, try to give
a little room to those who aren't.
--
Randy Yates
Sony Ericsson Mobile Communications
Research Triangle Park, NC, USA
randy.yates@sonyericsson.com, 919-472-1124
```
```Randy Yates <randy.yates@sonyericsson.com> wrote in message news:<xxpy8pj9t1g.fsf@usrts005.corpusers.net>...
> Dilip Sarwate <sarwate@uiuc.edu> writes:
>
> > Randy Yates wrote:
> > >
> > > Dilip Sarwate <sarwate@uiuc.edu> writes:
> > >
> > > > Every Reed-Solomon code contains a binary BCH code as
> > > > a subspace.
> > >
> > > Hmm. Well, how about the (26, 21) Reed Solomon code
> > > constructed from GF(3^3) with minimum distance 5?
> >
> > Randy:
> >
> > Stop nitpicking!
>
> Dilip:
>
> I can see how this would be viewed as nitpicking to someone who has
> studied the subject for decades and is comfortable with the
> terminology and theory. However, I am a beginner and, having only
> discussed it thus far within the confines of my classmates and
> professor, am still a bit unsure of the lingo and common assumptions.
> Please try to keep that in mind before criticizing me.
>
> > A more general
> > statement would have been "Every Reed-Solomon code
> > over GF(p^m) contains a BCH code over GF(p)."
>
> "A BCH code over GF(p)" is a contradiction according to the way it has
> been presented to me. A BCH code is, BY DEFINITION, a BINARY code,
> according to my notes.

That is not a contradiction. There can be many definitions, some may
be more general than others. There are binary BCH codes and indeed
these are the most common ones but there are also nonbinary BCH codes,
as well.
A binary BCH code is built over a binary extension field; a non-binary
BCH code is built over a non-binary extension field. If you have a
prime number p and an extension field GF(p^m) over GF(p) then you can
build a Reed-SOlomon code over the extension field. A subcode of said
RS code such that all the symbols are in the sub-field GF(p^s) of
GF(p^m) for some s is a BCH code. When s=1 you always get the subfield
GF(p). For other s>1, you may or may not get one. If p=2 and s=1 you
have the binary BCH codes. (Question: When is GF(p^s) < GF(p^m)?)
Whatever decodes the RS code will by force will also decode its BCH
subfield/subcode using the same extension field GF(p^m) where the
error locator polynomial lives.

>
> Further, I thought the key reason we are interested in BCH codes is
> that, due to their binary nature, the decoder can be implemented by
> finding the error-locator polynomial alone (e.g., using the
> Berlekamp-Massey algorithm) without requiring the error magnitudes
> (e.g., via the Forney algorithm) to be computed. This, combined with
> the maximum-distance separable and easily-specified minimum distance
> properties, makes them practically interesting, I thought.
>
> > > Further, even if you construct it from GF(2^m), how
> > > are you guaranteed that there are ANY binary codewords
> > > (other than the trivial codeword)?
> >
> > If the generator polynomial of Reed-Solomon code does
> > not have 1 as a root, then we are guaranteed that the
> > all-ones vector is a codeword in the Reed-Solomon code
> > as well as the BCH subcode.
>
> That is something we hadn't been shown.
>
> > More generally, if the
> > rate is low enough, the BCH subcode might be just the
> > repetition code consisting of the all-zero and all-one
> > vectors.  Nitpickers are reminded that in the case of
> > GF(p), p > 2, the repetition code will have p codewords:
> > the all-zero, all-one, all-two, .... , all-(p-1).
>
> Please note that this attitude contributes absolutely zero to
> encouraging discussion and learning on the subject. The fact
> that you're an expert in it is great. However, try to give
> a little room to those who aren't.

Professor Sarwate has not only the right attitude he has also given
you the RIGHT answer; therefore, he contributed the best that any one
could to the discussion...

cheers
```
```rge11x@netscape.net (robert egri) writes:
> [...]
> Randy Yates <randy.yates@sonyericsson.com> wrote in message news:<xxpy8pj9t1g.fsf@usrts005.corpusers.net>...
>> "A BCH code over GF(p)" is a contradiction according to the way it has
>> been presented to me. A BCH code is, BY DEFINITION, a BINARY code,
>> according to my notes.
>
> That is not a contradiction. There can be many definitions, some may
> be more general than others.

As long as there are many definitions, it is impossible to identify
a BCH code unambiguously.

> Professor Sarwate has not only the right attitude he has also given
> you the RIGHT answer;

So to belittle someone seeking information by referring to them in a demeaning
manner is the right attitude? Interesting viewpoint.
--
%  Randy Yates                  % "She's sweet on Wagner-I think she'd die for Beethoven.
%% Fuquay-Varina, NC            %  She love the way Puccini lays down a tune, and
%%% 919-577-9882                %  Verdi's always creepin' from her room."
%%%% <yates@ieee.org>           % "Rockaria", *A New World Record*, ELO
```
```>>>>> "Randy" == Randy Yates <randy.yates@sonyericsson.com> writes:

Randy> "A BCH code over GF(p)" is a contradiction according to the way it has
Randy> been presented to me. A BCH code is, BY DEFINITION, a BINARY code,
Randy> according to my notes.

I had learned that a Reed-Solomon code was a special type of
(non-binary) BCH code.  So I guess it depends on the book you are
using as your reference.  I always take BCH to be the non-binary one,
unless it's clear from context that some other BCH code is being
discussed.

Ray
```
```On Tue, 30 Mar 2004 11:52:17 -0500, Raymond Toy <toy@rtp.ericsson.se>
wrote:

>>>>>> "Randy" == Randy Yates <randy.yates@sonyericsson.com> writes:
>
>    Randy> "A BCH code over GF(p)" is a contradiction according to the way it has
>    Randy> been presented to me. A BCH code is, BY DEFINITION, a BINARY code,
>    Randy> according to my notes.
>
>I had learned that a Reed-Solomon code was a special type of
>(non-binary) BCH code.  So I guess it depends on the book you are
>using as your reference.  I always take BCH to be the non-binary one,
>unless it's clear from context that some other BCH code is being
>discussed.
>
>Ray

That's my understanding as well, RS codes are a subset of BCH, not the
other way around.  I've seen this classification and description in
multiple places, so I tend to think of them that way.  Makes sense to
me as well.

I've learned that getting a community to absolutely agree on
definitions is a futile exercise.  The best one can do is try to
ensure a common understanding of definitions and issues in each
context.   A pain, to be sure, but functionally it appears to be the
only practical way to do things.

Eric Jacobsen
Minister of Algorithms, Intel Corp.
My opinions may not be Intel's opinions.
http://www.ericjacobsen.org
```