DESCRIPTION
-----------
This archive contains an ANSI C library of functions implementing [7, 4]
Hamming encode and decode operations.  These implementations attempt to strike
a reasonable comprise between readability, adaptability speed, and memory usage.

There are two implementations for Hamming encoding, one that uses matrix
multiplication and one that uses a lookup table.  The lookup table version is
smaller and faster, but I used the matrix version to come up with the table for
the table version.

There are three implementations for Hamming decoding, one that uses matrix
multiplication, one that uses a lookup table and one that uses a packed lookup
table.  The packed table version is smaller, but slower than the table version,
and both versions are smaller and faster than the matrix version, but I used 
the matrix version to come up with the tables for the table versions.

More information on Hamming encoding and decoding may be found at:
http://michael.dipperstein.com/hamming

FILES
-----
COPYING         - Rules for copying and distributing LGPL software
hamming.c       - Hamming encode and decode functions
hamming.h       - Prototypes for encode and decode functions
LICENSE         - GNU Lesser General Public License (LGPL)
Makefile        - makefile for this project (assumes gcc compiler and GNU make)
README          - this file
testall.c       - Source for verifying routines and generating encode and
                  decode lookup tables.

BUILDING
--------
To build these files with GNU make and gcc:
1. Windows users should define the environment variable OS to be Windows or
   Windows_NT.  This is often already done.
2. Enter the command "make" from the command line.

USAGE
-----
Usage: testall <options>

options:
    D : Generate decode tables
    E : Generate encode table

Default usages with no options tests all functions.

HISTORY
-------
12/29/04  - Initial release
10/24/05  - Corrected errors in decode matrices pointed out by Ivan Piasini
            <furettoo@gmail.com>
          - Added test that verifies all single bit errors are correctly
            decoded.

TODO
----
- Add code to build code (C) and parity check (H) matrices from a definition
  of parity bits.
- Generalize for schemes other than (7, 4).

AUTHOR
------
Michael Dipperstein (mdipper@cs.ucsb.edu)
