#!/bin/sh

# Example of how an LDPC code can be encoded using using sparse,
# dense, and mixed representations of the generator matrix.  The dense
# and mixed representations are based on the same set of message bits
# as the sparse method with minprod heuristic.  This allows the correctness 
# of these methods to be checked by verifying that they all produce the same 
# result when encoding random messages.  The results are also checked by 
# 'verify'.
#
# A (400,200) LDPC code with 3 checks per bit is used for the test.

set -x -e # Echo commands as they are executed; stop if an error occurs

make-ldpc ldpc-encode.pchk 200 400 1 evenboth 3 
make-gen  ldpc-encode.pchk ldpc-encode.genf sparse first
make-gen  ldpc-encode.pchk ldpc-encode.genc sparse mincol
make-gen  ldpc-encode.pchk ldpc-encode.genp sparse minprod
make-gen  ldpc-encode.pchk ldpc-encode.gend dense ldpc-encode.genp
make-gen  ldpc-encode.pchk ldpc-encode.genm mixed ldpc-encode.genp
rand-src  ldpc-encode.src 1 200x10
encode    ldpc-encode.pchk ldpc-encode.genf ldpc-encode.src ldpc-encode.encf
encode    ldpc-encode.pchk ldpc-encode.genc ldpc-encode.src ldpc-encode.encc
encode    ldpc-encode.pchk ldpc-encode.genp ldpc-encode.src ldpc-encode.encp
encode    ldpc-encode.pchk ldpc-encode.gend ldpc-encode.src ldpc-encode.encd
encode    ldpc-encode.pchk ldpc-encode.genm ldpc-encode.src ldpc-encode.encm
cmp ldpc-encode.encp ldpc-encode.encd
cmp ldpc-encode.encp ldpc-encode.encm
verify    ldpc-encode.pchk ldpc-encode.encf ldpc-encode.genf ldpc-encode.src
verify    ldpc-encode.pchk ldpc-encode.encc ldpc-encode.genc ldpc-encode.src
verify    ldpc-encode.pchk ldpc-encode.encp ldpc-encode.genp ldpc-encode.src
