Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Error Correcting Code (Reed Mullers) algorithm based on HyperCubes
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
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.