ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | http://www.eccpage.com/ |
| Last Crawled | 2026-04-07 13:23:01 (3 hours ago) |
| First Indexed | 2013-08-08 17:38:09 (12 years ago) |
| HTTP Status Code | 200 |
| Meta Title | The Error Correcting Codes (ECC) Page |
| Meta Description | null |
| Meta Canonical | null |
| Boilerpipe Text | The Error Correcting Codes (ECC) Page
Welcome!
This page contains
several computer
programs, written in C/C++ language (and some Matlab scripts), that
implement
encoding and decoding routines of popular error correcting codes (ECC),
such
as Reed-Solomon codes, BCH codes, the binary Golay code, a binary Goppa
code,
a Viterbi decoder and more.
Note that no effort
has been made to `optimize' most of the algorithms used in the programs
below
. The algorithms work well, but by no means should be used
as a basis for an implementation. All these programs are free to use
for academic and personal purposes only. Use them at your own
discretion. Enjoy!
If you have an interest
in digital
communication or storage system design and implementation that involves
(and
believe me, it will!) error control coding,
drop me a line,
I will be happy to
learn more about novel applications of ECC and also to offer my
advice.
I still recommend the following
best
textbooks to learn more about the fascinating topic of error correcting
codes:
S. Lin and D. J.
Costello, Jr.,
Error Control Coding: Fundamentals and Applications,
second edition, Prentice Hall: Englewood Cliffs, NJ, 2004.
W.W. Peterson and
E.J. Weldon, Jr.,
Error-Correcting Codes
, 2nd edition, MIT
Press: Cambridge, Mass., 1972.
F.J. MacWilliams and
N.J.A. Sloane,
The Theory of Error-Correcting Codes
,
North-Holland: New York, NY, 1977.
My
textbook, now in its second edition, offers a gentle and hands-on (with
a companion website containing more C and Matlab programs) introduction
to
the basic principles and applications of error correcting codes:
Copyright (c) 1996-2023.
Robert Morelos-Zaragoza
. All
rights reserved.
The Ubiquitous
Reed-Solomon Codes
by Barry A.
Cipra, Reprinted from SIAM News, Volume 26-1, January 1993
Reed-Solomon (RS) codes
Decoding the
Berlekamp-Masssey (BM) algorithm, with error evaluation as explained in
Lin and Costello's book.
(Simon Rockliff, 1989)
Reed-Solomon
errors-and-erasures decoder
Based on the
above program to handle errors and erasures, plus other features.
Note:
The program does not work with shortened codes and codes over GF(2^m),
m<8 ...
it gives good ideas though.
(Thirumoorthy, 1995)
Another
Reed-Solomon errors-and-erasures decoder
Nicely
written, greatly
improved version of the program above. It now lets the user create
multiple
encoders at run time with specified parameters You can get the latest
package
here
.
Check
also
Phil's home page
.
(Phil Karn, 2006).
BCH codes
Enter only the
length and error correcting capability. The program computes the
generator polynomial of any binary BCH code, plus encoding and decoding
using the BM algorithm.
(Morelos-Zaragoza, 1994).
Binary (48,36,5) BCH code.
This BCH code
is used in control channels for cellular TDMA in the U.S. Since this
code has only two-error correcting capability, fast decoding is done by
pre-solving a system of two equations (the syndromes) in two unknowns
(the error positions), see MacWilliams and Slone's book, chapter
3. NOTE: There was a "bug" in this program, fixed on 8/27/97.
(Morelos-Zaragoza, 1994).
Binary (31,21,5) BCH code.
This BCH code
is used in the POCSAG protocol specification for pagers. The program is
identical to the one above, except for the parameters. NOTE: There was
a "bug" in this program. It was fixed 8/27/97.
(Morelos-Zaragoza, 1997).
Golay (23,12,7) code
Fast encoding
and decoding by software with look-up tables. The program uses a
16K-by-16 bit encoding table and an 8K-by-32 bit decoding table.
(Morelos-Zaragoza, 1994).
A Goppa code
Encoding/Decoding
of a (1024,654,75) Goppa code (originally written with a public key
cryptographic scheme in mind). This program is a compact implementation
of Goppa codes with parameters m=10, t=37 for 32-bit machines. Decoding
method due to N. Patterson, ``Algebraic Decoding of Goppa Codes,''
IEEE
Trans. Info.Theory
, 21 (1975), 203-207.
(Anonymous, as far as I know)
CRC-32
Computes the
CRC value of a file, as used in ZMODEM or PKZIP.
(Craig Bruce, 1994)
ecc-1.2.1.tar
(106496 bytes)
Routines to
encode and decode a file using a (255,249,7) RS code.
(Paul Flaherty, 1993)
Turbo-codes
home page at JPL
TURBO decoder
archive:
BCJR_turbo.tar
An
implementation of the BCJR algorithm, based on the pseudocode in
W.E.Ryan's tutorial paper (
PS
file
).
(Mathys Walma, 1998)
Viterbi decoding
Package
viterbi-3.0.1.tar
contains programs to implement Viterbi decoding of (de-facto standard)
rate-1/2 and rate-1/3 m=7 convolutional codes. Package
simd-viterbi-2.0.1.tar
contains programs to implement Viterbi decoders for r=1/2 k=7
and k=9 codes that use the Intel/AMD SIMD instruction sets
(MMX/SSE/SSE2). Check also
Phil's
home page
.
(Phil Karn, 2006)
galois.tar
Encoding/decoding
for BCH/RS codes.
(Bart De Canne, 1994)
A block coded QPSK modulation
for unequal error protection (UEP)
This program
was used to simulate the performance of a coding scheme proposed in my
Ph.D. thesis for UEP over an AWGN channel. For more details, see R.H.
Morelos-Zaragoza and S. Lin, ``QPSK Block Modulation Codes for Unequal
Error Protection,''
IEEE Transactions on Information Theory
,
Vol. 41, No. 2, pp. 576-581, March 1995.
(Morelos-Zaragoza, 1993)
Linear code bound
How good is a
code? What are the lower and upper bounds on the minimum distance of a
linear block code given its length and dimension? The answer to this
question may be found on-line! (remkor@win.tue.nl, 1995). Also try:
http://www.codetables.de/
maintained by Markus Grassl (Thanks to Axel Kohnert for the pointer).
Erasure-correcting
codes
An
implementation of a block code for erasure correction in network
communication protocols. The encoder/decoder runs quite fast (up to
several MB/s on a Pentium).
(Luigi Rizzo, 1996)
Finite
Field Calculator and Reed-Solomon Simulator
Java applet of
GF calculator and an RS encoder/decoder
(Emina Soljanin, 1997)
A Windows 95/NT
program to do Galois Field math
(Andrew Lin,
1997)
Properties of binary linear codes
This is a C++
program (compiled for Sparcs) that computes properties of binary codes,
from more basic items such as minimum distance and dimension to more
complicated properties such as trellis decoding complexity and whether
the Tanner graph of the code is cycle-free.
(Ari Trachtenberg, 1998)
Maximal LFSR program
A program to
find primitive polynomials of maximum cycle length
(Steve Ungstad, 1999)
A Tutorial on
Convolutional Coding with Viterbi Decoding
The purpose of
this tutorial is to introduce the reader to a forward error correction
technique known as convolutional coding with Viterbi decoding. More
particularly, this tutorial will focus primarily on the Viterbi
decoding algorithm itself. The intended audience is anyone interested
in designing or understanding wireless digital communications systems.
(Chip Fleming, 1999)
David
MacKay's Gallager low density parity-check (LDPC) code resources.
An excellent
reference for iterative decoding. Papers on Gallager codes. Matrices
for codes. Source code for decoding.
(David MacKay, 1997)
MATLAB routines for LDPC codes over
GF(q), q=2^m.
A few MATLAB
routines for encoding/decoding low density parity check codes.
(Igor Kozintsev, 1999)
Perl script for a type-C2
algebraic interleaver.
Generates a
sequence of distinct numbers such that the length of the sequence can
be any power of 2. A particular characteristic of the generated
sequence is that it is symmetric in the sense that an entry j in row i
implies that the entry in row j is i. (Interleaver and deinterleaver
are identical!)
(Oscar Takeshita, 1997)
Forward Error
Correction (FEC) Page
This site
contains some examples of Forward Error Correction (FEC) software and
hardware. You will find software and hardware examples for free
download, which are available as 'C' source code, VHDL source code or
as 'VHDL' code generators for SUN/Solaris.
(Christian Schuler, 1998. Updated 2001)
A fast and accurate
degree distribution optimizer for ldpc code ensembles
The tool
ldpcopt was developed in Switzerland, to search for optimized LDPC
degree distributions for various channels.
(Abdelaziz AMRAOUI, 2001.)
Tc_Ds_Analysis.exe
Windows
program to compute the distance spectrum of a turbo code and the union
bound on the BER. See the
read_me file
(Seokhyun Yoon, 2002.)
BCH_TAMU.tar
Generalized BCH code performance evaluator
(Kuntal Sampat)
This page was last updated on February 21, 2023.
Robert Morelos-Zaragoza |
| Markdown | **The Error Correcting Codes (ECC) Page**

###
**Welcome\!**
This page contains several computer programs, written in C/C++ language (and some Matlab scripts), that implement encoding and decoding routines of popular error correcting codes (ECC), such as Reed-Solomon codes, BCH codes, the binary Golay code, a binary Goppa code, a Viterbi decoder and more.
***Note that no effort has been made to \`optimize' most of the algorithms used in the programs below***. The algorithms work well, but by no means should be used as a basis for an implementation. All these programs are free to use for academic and personal purposes only. Use them at your own discretion. Enjoy\!
If you have an interest in digital communication or storage system design and implementation that involves (and believe me, it will!) error control coding, [drop me a line,](mailto:morelos_zaragoza@yahoo.com) I will be happy to learn more about novel applications of ECC and also to offer my advice.
I still recommend the following best textbooks to learn more about the fascinating topic of error correcting codes:
1. S. Lin and D. J. Costello, Jr., *Error Control Coding: Fundamentals and Applications,* second edition, Prentice Hall: Englewood Cliffs, NJ, 2004.
2. W.W. Peterson and E.J. Weldon, Jr., *Error-Correcting Codes*, 2nd edition, MIT Press: Cambridge, Mass., 1972.
3. F.J. MacWilliams and N.J.A. Sloane, *The Theory of Error-Correcting Codes*, North-Holland: New York, NY, 1977.
My textbook, now in its second edition, offers a gentle and hands-on (with a companion website containing more C and Matlab programs) introduction to the basic principles and applications of error correcting codes:
[](http://www.amazon.com/gp/product/0470015586/ref=sr_11_1/102-3025380-7157754?ie=UTF8)
Copyright (c) 1996-2023. [Robert Morelos-Zaragoza](mailto:morelos_zaragoza@yahoo.com). All rights reserved.
***
1. **[The Ubiquitous Reed-Solomon Codes](http://www.eccpage.com/reed_solomon_codes.html)**
2. **[Reed-Solomon (RS) codes](http://www.eccpage.com/rs.c)**
3. **[Reed-Solomon errors-and-erasures decoder](http://www.eccpage.com/new_rs_erasures.c)**
4. **[Another Reed-Solomon errors-and-erasures decoder](http://www.ka9q.net/code/fec/reed-solomon-3.1.1.tar.gz)**
5. **[BCH codes](http://www.eccpage.com/bch3.c)**
6. **[Binary (48,36,5) BCH code.](http://www.eccpage.com/bch4836.c)**
7. **[Binary (31,21,5) BCH code.](http://www.eccpage.com/bch3121.c)**
8. **[Golay (23,12,7) code](http://www.eccpage.com/golay23.c)**
9. **[A Goppa code](http://www.eccpage.com/goppa_code.c)**
10. **[CRC-32](http://www.eccpage.com/crc-32b.c)**
11. **[ecc-1.2.1.tar](http://www.eccpage.com/ecc-1.2.1.tar)** (106496 bytes)
12. **[Turbo-codes home page at JPL](http://www331.jpl.nasa.gov/public/JPLtcodes.html)**
13. **TURBO decoder archive: [BCJR\_turbo.tar](http://www.eccpage.com/BCJR_turbo.tar)**
14. **Viterbi decoding**
15. **[galois.tar](http://www.eccpage.com/galois.tar)**
16. **[A block coded QPSK modulation for unequal error protection (UEP)](http://www.eccpage.com/UEP_QPSK.c)**
17. **[Linear code bound](http://www.win.tue.nl/~aeb/voorlincod.html)**
18. **[Erasure-correcting codes](http://www.iet.unipi.it/~luigi/fec.html)**
19. **[Finite Field Calculator and Reed-Solomon Simulator](http://cm.bell-labs.com/who/emina/applets/FFCalc.html)**
20. **[A Windows 95/NT program to do Galois Field math](http://www.geocities.com/myopic_stargazer)**
21. **[Properties of binary linear codes](http://ipsit.bu.edu/comp.html)**
22. **[Maximal LFSR program](http://www.eccpage.com/polym.c)**
23. **[A Tutorial on Convolutional Coding with Viterbi Decoding](http://pweb.netcom.com/~chip.f/Viterbi.html)**
24. **[David MacKay's Gallager low density parity-check (LDPC) code resources.](http://wol.ra.phy.cam.ac.uk/mackay/CodesFiles.html)**
25. **[MATLAB routines for LDPC codes over GF(q), q=2^m.](http://www.kozintsev.net/)**
26. **[Perl script for a type-C2 algebraic interleaver.](http://www.eccpage.com/takeshita)**
27. **[Forward Error Correction (FEC) Page](http://home.nexgo.de/christianschuler/fec_sw.html)**
28. **[A fast and accurate degree distribution optimizer for ldpc code ensembles](http://lthcwww.epfl.ch/research/ldpcopt/)**
29. **[Tc\_Ds\_Analysis.exe](http://www.eccpage.com/Tc_Ds_Analysis.exe)**
30. **[BCH\_TAMU.tar](http://www.eccpage.com/BCH_TAMU.tar)**
***
This page was last updated on February 21, 2023. [Robert Morelos-Zaragoza](mailto:morelos_zaragoza@yahoo.com) |
| Readable Markdown | **The Error Correcting Codes (ECC) Page**

###
**Welcome\!**
This page contains several computer programs, written in C/C++ language (and some Matlab scripts), that implement encoding and decoding routines of popular error correcting codes (ECC), such as Reed-Solomon codes, BCH codes, the binary Golay code, a binary Goppa code, a Viterbi decoder and more. ***Note that no effort has been made to \`optimize' most of the algorithms used in the programs below***. The algorithms work well, but by no means should be used as a basis for an implementation. All these programs are free to use for academic and personal purposes only. Use them at your own discretion. Enjoy\!
If you have an interest in digital communication or storage system design and implementation that involves (and believe me, it will!) error control coding, [drop me a line,](mailto:morelos_zaragoza@yahoo.com) I will be happy to learn more about novel applications of ECC and also to offer my advice.
I still recommend the following best textbooks to learn more about the fascinating topic of error correcting codes:
1. S. Lin and D. J. Costello, Jr., *Error Control Coding: Fundamentals and Applications,* second edition, Prentice Hall: Englewood Cliffs, NJ, 2004.
2. W.W. Peterson and E.J. Weldon, Jr., *Error-Correcting Codes*, 2nd edition, MIT Press: Cambridge, Mass., 1972.
3. F.J. MacWilliams and N.J.A. Sloane, *The Theory of Error-Correcting Codes*, North-Holland: New York, NY, 1977.
My textbook, now in its second edition, offers a gentle and hands-on (with a companion website containing more C and Matlab programs) introduction to the basic principles and applications of error correcting codes:
[](http://www.amazon.com/gp/product/0470015586/ref=sr_11_1/102-3025380-7157754?ie=UTF8)
Copyright (c) 1996-2023. [Robert Morelos-Zaragoza](mailto:morelos_zaragoza@yahoo.com). All rights reserved.
***
1. **[The Ubiquitous Reed-Solomon Codes](http://www.eccpage.com/reed_solomon_codes.html)**
2. **[Reed-Solomon (RS) codes](http://www.eccpage.com/rs.c)**
3. **[Reed-Solomon errors-and-erasures decoder](http://www.eccpage.com/new_rs_erasures.c)**
4. **[Another Reed-Solomon errors-and-erasures decoder](http://www.ka9q.net/code/fec/reed-solomon-3.1.1.tar.gz)**
5. **[BCH codes](http://www.eccpage.com/bch3.c)**
6. **[Binary (48,36,5) BCH code.](http://www.eccpage.com/bch4836.c)**
7. **[Binary (31,21,5) BCH code.](http://www.eccpage.com/bch3121.c)**
8. **[Golay (23,12,7) code](http://www.eccpage.com/golay23.c)**
9. **[A Goppa code](http://www.eccpage.com/goppa_code.c)**
10. **[CRC-32](http://www.eccpage.com/crc-32b.c)**
11. **[ecc-1.2.1.tar](http://www.eccpage.com/ecc-1.2.1.tar)** (106496 bytes)
12. **[Turbo-codes home page at JPL](http://www331.jpl.nasa.gov/public/JPLtcodes.html)**
13. **TURBO decoder archive: [BCJR\_turbo.tar](http://www.eccpage.com/BCJR_turbo.tar)**
14. **Viterbi decoding**
15. **[galois.tar](http://www.eccpage.com/galois.tar)**
16. **[A block coded QPSK modulation for unequal error protection (UEP)](http://www.eccpage.com/UEP_QPSK.c)**
17. **[Linear code bound](http://www.win.tue.nl/~aeb/voorlincod.html)**
18. **[Erasure-correcting codes](http://www.iet.unipi.it/~luigi/fec.html)**
19. **[Finite Field Calculator and Reed-Solomon Simulator](http://cm.bell-labs.com/who/emina/applets/FFCalc.html)**
20. **[A Windows 95/NT program to do Galois Field math](http://www.geocities.com/myopic_stargazer)**
21. **[Properties of binary linear codes](http://ipsit.bu.edu/comp.html)**
22. **[Maximal LFSR program](http://www.eccpage.com/polym.c)**
23. **[A Tutorial on Convolutional Coding with Viterbi Decoding](http://pweb.netcom.com/~chip.f/Viterbi.html)**
24. **[David MacKay's Gallager low density parity-check (LDPC) code resources.](http://wol.ra.phy.cam.ac.uk/mackay/CodesFiles.html)**
25. **[MATLAB routines for LDPC codes over GF(q), q=2^m.](http://www.kozintsev.net/)**
26. **[Perl script for a type-C2 algebraic interleaver.](http://www.eccpage.com/takeshita)**
27. **[Forward Error Correction (FEC) Page](http://home.nexgo.de/christianschuler/fec_sw.html)**
28. **[A fast and accurate degree distribution optimizer for ldpc code ensembles](http://lthcwww.epfl.ch/research/ldpcopt/)**
29. **[Tc\_Ds\_Analysis.exe](http://www.eccpage.com/Tc_Ds_Analysis.exe)**
30. **[BCH\_TAMU.tar](http://www.eccpage.com/BCH_TAMU.tar)**
***
This page was last updated on February 21, 2023. [Robert Morelos-Zaragoza](mailto:morelos_zaragoza@yahoo.com) |
| Shard | 121 (laksa) |
| Root Hash | 17909753356624811321 |
| Unparsed URL | com,eccpage!www,/ h80 |