Error Correcting Code (Reed Mullers) algorithm based on HyperCubes
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
boost
gtest-1.7.0
includes
make
src
test
.gitignore
LICENSE
Makefile
README
input
main.cc
output
run.sh

README

ECC-HyperCube
=============

Fast algorithm for encoding and decoding Reed Muller Error Correcting Codes based on HyperCubes

Installation:
  - $make
Run:
  - $cat input | ./cubecode > output
  - Input file format:
      + First line: number of activities (or number of lines following)
      + From second line to the end: each line defines r, m, activity type, cache mode, and data respectively. 
       ==> r is the order and m is the length (2^m) of reed muller codes. From my perspective, n would be the number of dimensions of block code and r would be the number of dimensions of the parity bits used to correct bit errors.
       ==> activity type: e-> encode, d-> decode.
       ==> cache mode: n-->none, p-->partial, f-->full
       ==> data: in encoding type, data is the message need encoding, while in decoding type, data is the message received from a noisy channel with error bits included.
      + Restrictions: 
         0<n<16
         0<r<n
         actvity: e or d
         data: 
               + for encoding step
               data binary string with length = C(n,0)+C(n,1)+..+C(n-r-1)
               with C(m,n) = m!/(n!(m-n)!)
               So, for m=4,r=2 code will have a length=C(4,0)+C(4,1)=1+4=5
	       + for decoding step, data will have length 2^n
               So, for m=4 code will have a lenght of 16
         Input length of data carefully; otherwise, ERROR would be thrown during the run-time
      + Input example:
         input
         -----------
         1
         4 2 e n 10110
      There's 1 activity required to process which is encoding reed muller code (4,2) with message 10110 without cache
      + Output:
         Initialization in:0 sec.
         Meassage length(k):5
         Block length(n):16
         Rate(k/n):0.333333
         Bit error tolerance:3 bit(s)
         message:10110
         encoded:1011000110001101
         encoded in:0 sec.