Release Notes for LDPC Software
These notes describe all the public releases of this software. Old
and future releases can be obtained via
Release of 2006-02-08.
The copyright notice has been changed in this release to no longer
restrict use to purposes of research or education. The new copyright
notice can be read here. It is now
possible to create LDPC codes with varying numbers of checks per bit
(an extension based on work by Peter Junteng Liu). New programs for
converting to and from the alist
format for parity check matrices, used by David MacKay and others,
have also been added.
The following new features have been added:
- The make-ldpc program can
new create LDPC codes with varying numbers of checks per bit. The
examples now include a code of this sort.
- New programs pchk-to-alist
and alist-to-pchk have
been added, which convert to and from alist
- A run-examples script has been
added, which runs all the examples and
compares with the saved output that I obtained.
Release of 2001-11-18.
This is a minor release, whose main purpose is fixing bug (1) below.
Also, this release has been tested and found to work with the cygwin Unix environment that runs
under Microsoft Windows.
The following new feature has been added:
The following program module change was made:
- A new -t option has been added to
causes it to print the transpose of the parity check matrix.
The following bugs were fixed:
- The behaviour of mod2dense_invert_selected
has been changed when the matrix has dependent rows. The result returned
contains the inverse of a sub-matrix in its initial columns. The contents
of the remaining columns up to the number of rows was previously undefined,
but these columns are now set to contain zeros. This was done to fix
bug (1) below.
A few minor fixes to the documentation have also been made.
- A bug has been fixed in
produced invalid `dense' or `mixed' generator matrices when the parity
check matrix had redundant rows.
The `sparse' generator matrices were not affected. The output of the
ex-dep example has changed slightly as a
- The open mode for reading the file of random numbers has been changed from
"r" to "rb", for compatibility with non-Unix systems.
- mod2sparse_copy has
been fixed so that it copies the lr and pr fields
- The "set -v -e" in the command files for the examples has
been replaced by two commands, "set -e" and "set -v", since some
shells can't set two options at once.
Release of 2001-05-04.
Changes and new features regarding programs and associated
documentation and examples:
Changes and new features regarding program modules and other internals:
- Warnings have been added to the documentation about the dangers of
using zero codewords for testing (due to the possibility of the decoder
accidently being non-symmetric). The examples have been changed to
not use zero codewords, except for
ex-ham7a, which still
demonstrates this facility.
- Decoding by probability propagation has been changed so that if
a probability ratio gets set to NaN ("not a number", the result of
infinite but conflicting evidence from different sources), the probability
ratio is changed to 1, in hopes that something sensible may result.
- The decoding procedures have been changed to decode a bit to a 1 if
there is a tie, so that any resulting asymmetry in decoding will
make zero decoding less, rather than more, likely. See point (1) above.
- All programs now allow a file name argument to be "-", which specifies
standard input or standard output, as appropriate. The
ex-ldpc36-5000a example has been
changed to use this facility in order to avoid creating lots of files.
- Channels with noise from a logistic distribution (AWLN) have been
implemented. For details,
see the channel documentation.
- The make-gen program for "dense" or "mixed" options was modified
so that when some parity checks are redundant, others are not declared
redundant when they aren't. This makes the result compatible with
what is obtained with the "sparse" option. The example in the
discussion of linear dependence in parity check
matrices has changed slightly as a result.
- The messages displayed by the decode
program have changed slightly: The block size is no longer displayed,
and the percentage of bits changed is now shown. The data output
when the -t option is specified now includes the number of
bits changed in each block.
- A new -T option to decode
detailed information on decoding
has been added.
- Doing a make clean will now remove the files created
by running the examples.
- The files created by the examples now
start with "ex-" and contain a ".", to make them easier to
identify for cleanup, and the saved output file now ends in
"-out" rather than ".out".
- The scripts for the examples now use the -v option of set
rather than -x, so that the command lines are echoed
faithfully as they are read.
- Two new examples have been added:
ex-dep demonstrates what happens when parity check matrices
have redundant row, and ex-wrong-model investigates what
happens when the wrong model is used to decode.
The following bugs were fixed:
- Instructions have been added on
how to modify the programs, and some
code has been reorganized to facilitate modifications.
- The makefile has been made trivial, simply recompiling everything
from scratch every time. This is simpler and less error prone
than putting in dependencies.
Compiling all the programs takes only about five seconds on a
procedure has been changed
to take an additional argument in which a permutation of rows is
returned. This extension is needed in order for the result when
the matrix is not of full rank to include as many rows as possible,
as needed for the above modification of make-gen.
- New routines
been added, analogous to the previous routines for copying columns.
- The decoding procedures have been changed to always return the bit
probabilities (previously, one could pass a null pointer to suppress
this). This makes things simpler, and facilitates the production of
detailed trace output when the -T option is used.
There were also numerous minor cleanups of program code and documentation.
- A problem with print-gen prevented the -d option from working
in most cases. The documentation was also fixed to note what
the L and U matrices printed will look like.
- The documentation for
was ambiguous. It has been clarified. The dense and sparse
implementations were inconsistent. The sparse version has been changed
to match the dense version, which was and is the only version actually
used in the LDPC software.
- In decode.c, a variable declared to be float was printed
using "%f", which strangely didn't work with one compiler.
It's now declared as double.
Old release of 2000-03-19.
This was the first public release.
Back to index for LDPC software