From acd269fc97c421088a628c1c37486074f32870b7 Mon Sep 17 00:00:00 2001 From: Steven Franke Date: Sat, 26 Mar 2016 02:47:07 +0000 Subject: [PATCH] Add peg code for generating ldpc codes. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6561 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/ldpc/jtmode_codes/compare.lab | 4 - lib/ldpc/jtmode_codes/fig_compare.gnuplot | 16 +- lib/ldpc/jtmode_codes/fig_success.gnuplot | 8 +- lib/ldpc/jtmode_codes/ldpc-waterfall | 3 +- lib/ldpc/jtmode_codes/success.lab | 7 +- lib/ldpc/msksim.f90 | 8 +- lib/ldpc/peg/128-64-reg4.deg | 4 + lib/ldpc/peg/BigGirth.C | 573 ++++++++++++++++++++++ lib/ldpc/peg/BigGirth.h | 54 ++ lib/ldpc/peg/CodeName | 68 +++ lib/ldpc/peg/CyclesOfGraph.C | 237 +++++++++ lib/ldpc/peg/CyclesOfGraph.h | 40 ++ lib/ldpc/peg/DenEvl_11.deg | 3 + lib/ldpc/peg/DenEvl_15.deg | 3 + lib/ldpc/peg/DenEvl_20.deg | 4 + lib/ldpc/peg/DenEvl_7.deg | 3 + lib/ldpc/peg/DenEvl_9.deg | 3 + lib/ldpc/peg/MainPEG | Bin 0 -> 63744 bytes lib/ldpc/peg/MainPEG.C | 200 ++++++++ lib/ldpc/peg/Makefile | 29 ++ lib/ldpc/peg/Random.C | 101 ++++ lib/ldpc/peg/Random.h | 29 ++ lib/ldpc/peg/Reg_2.deg | 3 + lib/ldpc/peg/Reg_3.deg | 3 + lib/ldpc/peg/Reg_4.deg | 3 + lib/ldpc/peg/ldpc-peg-128-80.alist | 180 +++++++ lib/ldpc/peg/leftHandGirth.log | 1 + lib/ldpc/peg/peg-128-64-reg4.alist | 196 ++++++++ lib/ldpc/peg/peg-128-64-reg4.code | 67 +++ lib/ldpc/peg/peg-128-72-reg4.alist | 188 +++++++ lib/ldpc/peg/peg-128-72-reg4.code | 59 +++ lib/ldpc/peg/peg-128-80-reg3.alist | 180 +++++++ lib/ldpc/peg/peg-128-80-reg3.code | 51 ++ lib/ldpc/peg/peg-128-80-reg4.alist | 180 +++++++ lib/ldpc/peg/peg-128-80-reg4.code | 51 ++ lib/ldpc/peg/peg-144-72-reg4.alist | 220 +++++++++ lib/ldpc/peg/peg-144-72-reg4.code | 75 +++ lib/ldpc/peg/peg2alist | 37 ++ lib/ldpc/peg/peg_128_80.pchk | 51 ++ lib/ldpc/peg/sfpeg1.code | 51 ++ lib/ldpc/peg/sfpeg1.deg | 3 + lib/ldpc/peg/sfpeg2.alist | 180 +++++++ lib/ldpc/peg/sfpeg2.code | 51 ++ lib/ldpc/peg/sfpeg2.deg | 3 + lib/ldpc/peg/sfpeg3.alist | 180 +++++++ lib/ldpc/peg/sfpeg3.code | 51 ++ lib/ldpc/peg/sfpeg3.deg | 3 + 47 files changed, 3440 insertions(+), 24 deletions(-) create mode 100644 lib/ldpc/peg/128-64-reg4.deg create mode 100644 lib/ldpc/peg/BigGirth.C create mode 100644 lib/ldpc/peg/BigGirth.h create mode 100644 lib/ldpc/peg/CodeName create mode 100644 lib/ldpc/peg/CyclesOfGraph.C create mode 100644 lib/ldpc/peg/CyclesOfGraph.h create mode 100644 lib/ldpc/peg/DenEvl_11.deg create mode 100644 lib/ldpc/peg/DenEvl_15.deg create mode 100644 lib/ldpc/peg/DenEvl_20.deg create mode 100644 lib/ldpc/peg/DenEvl_7.deg create mode 100644 lib/ldpc/peg/DenEvl_9.deg create mode 100755 lib/ldpc/peg/MainPEG create mode 100644 lib/ldpc/peg/MainPEG.C create mode 100644 lib/ldpc/peg/Makefile create mode 100644 lib/ldpc/peg/Random.C create mode 100644 lib/ldpc/peg/Random.h create mode 100644 lib/ldpc/peg/Reg_2.deg create mode 100644 lib/ldpc/peg/Reg_3.deg create mode 100644 lib/ldpc/peg/Reg_4.deg create mode 100644 lib/ldpc/peg/ldpc-peg-128-80.alist create mode 100644 lib/ldpc/peg/leftHandGirth.log create mode 100644 lib/ldpc/peg/peg-128-64-reg4.alist create mode 100644 lib/ldpc/peg/peg-128-64-reg4.code create mode 100644 lib/ldpc/peg/peg-128-72-reg4.alist create mode 100644 lib/ldpc/peg/peg-128-72-reg4.code create mode 100644 lib/ldpc/peg/peg-128-80-reg3.alist create mode 100644 lib/ldpc/peg/peg-128-80-reg3.code create mode 100644 lib/ldpc/peg/peg-128-80-reg4.alist create mode 100644 lib/ldpc/peg/peg-128-80-reg4.code create mode 100644 lib/ldpc/peg/peg-144-72-reg4.alist create mode 100644 lib/ldpc/peg/peg-144-72-reg4.code create mode 100755 lib/ldpc/peg/peg2alist create mode 100644 lib/ldpc/peg/peg_128_80.pchk create mode 100644 lib/ldpc/peg/sfpeg1.code create mode 100644 lib/ldpc/peg/sfpeg1.deg create mode 100644 lib/ldpc/peg/sfpeg2.alist create mode 100644 lib/ldpc/peg/sfpeg2.code create mode 100644 lib/ldpc/peg/sfpeg2.deg create mode 100644 lib/ldpc/peg/sfpeg3.alist create mode 100644 lib/ldpc/peg/sfpeg3.code create mode 100644 lib/ldpc/peg/sfpeg3.deg diff --git a/lib/ldpc/jtmode_codes/compare.lab b/lib/ldpc/jtmode_codes/compare.lab index d7b3432df..e69de29bb 100644 --- a/lib/ldpc/jtmode_codes/compare.lab +++ b/lib/ldpc/jtmode_codes/compare.lab @@ -1,4 +0,0 @@ -5.7 0.0002 "CC/CRC15" -5.7 0.0001 "(128,80)/50" -5.5 0.000007 "(160,80)" -5.5 0.000002 "(207,72)" diff --git a/lib/ldpc/jtmode_codes/fig_compare.gnuplot b/lib/ldpc/jtmode_codes/fig_compare.gnuplot index 1098f5886..855ef72f7 100644 --- a/lib/ldpc/jtmode_codes/fig_compare.gnuplot +++ b/lib/ldpc/jtmode_codes/fig_compare.gnuplot @@ -13,13 +13,13 @@ set mytics 10 set grid set logscale y plot [-1:6] [1e-6:1] \ - "jtmskcode.results" using 1:(100000-$2)/100000 with linespoints lt 1 lw 2 pt 1, \ - "jtmskcode.results" using 1:($5/1000000) with linespoints lt 1 lw 2 pt 1, \ - "160-80-sf4.results" using 1:(1000000-$2)/1000000 with linespoints lt 2 lw 2 pt 2, \ - "160-80-sf4.results" using 1:($3/1000000) with linespoints lt 2 lw 2 pt 2, \ - "128-80-sf13.results" using 1:(1000000-$10)/1000000 with linespoints lt 3 lw 2 pt 3, \ - "128-80-sf13.results" using 1:($11/1000000) with linespoints lt 3 lw 2 pt 3, \ - "206-72-sf14.results" using 1:(1000000-$4)/1000000 with linespoints lt 4 lw 2 pt 4, \ - "206-72-sf14.results" using 1:($5/1000000) with linespoints lt 4 lw 2 pt 4, \ + "128-80-peg-reg4.results" using ($1+0.46):(1-$2/1000000) with linespoints lt 1 lw 2 pt 1, \ + "128-80-peg-reg4.results" using ($1+0.46):($3/1000000) with linespoints lt 1 lw 2 pt 1, \ + "128-80-peg-reg3.results" using ($1+0.46):(1-$2/1000000) with linespoints lt 2 lw 2 pt 2, \ + "128-80-peg-reg3.results" using ($1+0.46):($3/1000000) with linespoints lt 2 lw 2 pt 2, \ + "128-80-sf13.results" using ($1+0.46):(1-$8/1000000) with linespoints lt 3 lw 2 pt 3, \ + "128-80-sf13.results" using ($1+0.46):($9/1000000) with linespoints lt 3 lw 2 pt 3, \ + "128-72-peg-reg4.results" using 1:(1-$2/1000000) with linespoints lt 4 lw 2 pt 4, \ + "128-72-peg-reg4.results" using 1:($3/1000000) with linespoints lt 4 lw 2 pt 4, \ "compare.lab" with labels exit diff --git a/lib/ldpc/jtmode_codes/fig_success.gnuplot b/lib/ldpc/jtmode_codes/fig_success.gnuplot index b66a8c9e7..a1689d8f7 100644 --- a/lib/ldpc/jtmode_codes/fig_success.gnuplot +++ b/lib/ldpc/jtmode_codes/fig_success.gnuplot @@ -13,9 +13,9 @@ set mytics 10 set grid #set logscale y plot [-1:6] [1e-6:1] \ - "jtmskcode.results" using 1:($4/1000000) with linespoints lt 1 lw 2 pt 1, \ - "160-80-sf4.results" using 1:($2/1000000) with linespoints lt 2 lw 2 pt 2, \ - "128-80-sf13.results" using 1:($10/1000000) with linespoints lt 3 lw 2 pt 3, \ - "206-72-sf14.results" using 1:($2/1000000) with linespoints lt 4 lw 2 pt 4, \ + "128-80-peg-reg4.results" using ($1+0.46):($2/1000000) with linespoints lt 1 lw 2 pt 1, \ + "128-80-peg-reg3.results" using ($1+0.46):($2/1000000) with linespoints lt 2 lw 2 pt 2, \ + "128-80-sf13.results" using ($1+0.46):($8/1000000) with linespoints lt 3 lw 2 pt 3, \ + "128-72-peg-reg4.results" using 1:($2/1000000) with linespoints lt 4 lw 2 pt 4, \ "success.lab" with labels exit diff --git a/lib/ldpc/jtmode_codes/ldpc-waterfall b/lib/ldpc/jtmode_codes/ldpc-waterfall index 6ab70c753..a38f58940 100755 --- a/lib/ldpc/jtmode_codes/ldpc-waterfall +++ b/lib/ldpc/jtmode_codes/ldpc-waterfall @@ -19,7 +19,8 @@ niterations=10 rate=$(echo "scale=5; $k/$n" | bc) echo n=$n k=$k rate=$rate m=$m -make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 120x3/8x4 no4cycle +#make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 120x3/8x4 no4cycle +cp sfpeg2.pchk ldpc.pchk make-gen ldpc.pchk ldpc.gen sparse rand-src ldpc.src 1 "$k"x"$ntrials" diff --git a/lib/ldpc/jtmode_codes/success.lab b/lib/ldpc/jtmode_codes/success.lab index 52d274c5d..1722c2aa8 100644 --- a/lib/ldpc/jtmode_codes/success.lab +++ b/lib/ldpc/jtmode_codes/success.lab @@ -1,3 +1,4 @@ -3.2 0.68 "(128,80) LDPC " -0.9 0.55 "(160,80) LDPC" -0.9 0.75 "(206,72) LDPC" +3.8 0.55 "(128,80) reg4" +2.6 0.85 "(128,80) sf13" +4.0 0.85 "(128,80) reg3" +1.7 0.65 "(128,72) reg4" diff --git a/lib/ldpc/msksim.f90 b/lib/ldpc/msksim.f90 index cf415c8e7..965b064de 100644 --- a/lib/ldpc/msksim.f90 +++ b/lib/ldpc/msksim.f90 @@ -10,15 +10,15 @@ character(50) pchk_file,gen_file integer(1) codeword(1:N), decoded(1:K), message(1:K) real*8 lratio(N), rxdata(N) -pchk_file="./jtmode_codes/ldpc-128-80-sf13.pchk" -gen_file="./jtmode_codes/ldpc-128-80-sf13.gen" +pchk_file="./jtmode_codes/peg-128-80-reg3.pchk" +gen_file="./jtmode_codes/peg-128-80-reg3.gen" rate=real(K)/real(N) call init_ldpc(trim(pchk_file)//char(0),trim(gen_file)//char(0)) -message(1:40)=1 -message(41:80)=0 +message(1:K/2)=1 +message((K/2+1):K)=0 call ldpc_encode(message,codeword) max_iterations=10 diff --git a/lib/ldpc/peg/128-64-reg4.deg b/lib/ldpc/peg/128-64-reg4.deg new file mode 100644 index 000000000..7b72d0676 --- /dev/null +++ b/lib/ldpc/peg/128-64-reg4.deg @@ -0,0 +1,4 @@ +1 +4 +1.0 + diff --git a/lib/ldpc/peg/BigGirth.C b/lib/ldpc/peg/BigGirth.C new file mode 100644 index 000000000..ad8b54a17 --- /dev/null +++ b/lib/ldpc/peg/BigGirth.C @@ -0,0 +1,573 @@ +#include +#include +#include +#include +#include "BigGirth.h" +#include "Random.h" + +using namespace std; + +NodesInGraph::NodesInGraph(void) { + connectionParityBit=NULL; + connectionSymbolBit=NULL; +} + +void NodesInGraph::setNumOfConnectionSymbolBit(int deg) { + if(deg<=0) {cout<<"Wrong NodesInGraph::setNumOfConnectionSymbolBit()"<M=M; + this->N=N; + this->filename=filename; + + mid=new int[M]; + + localGirth=new int[N]; + + nodesInGraph=new NodesInGraph [N]; + for(i=0;ilocalDepth)?localDepth:localGirth[k]; + if(k>0 && localGirth[k]=nodesInGraph[i].maxDegParity) + index++; + } + if(cpNumCur==numCur) {//can not expand any more + //additional handlement to select one having least connections + j=10000000; //dummy number + for(i=0;i=nodesInGraph[i].maxDegParity){ + tmp[i]=1; + } + } + } + index=0; + for(i=0;iEXPAND_DEPTH){//covering all parity nodes or meet the upper bound on cycles + + cycle=mincycles-1; + for(i=0;i=nodesInGraph[i].maxDegParity){ + tmp[i]=1; + } + } + } + + index=0; + for(i=0;inumCur && index!=M){ + delete [] current; + current=NULL; + numCur=cpNumCur; + current=new int[numCur]; + index=0; + for(i=0;imax_col) + max_col=nodesInGraph[i].numOfConnectionParityBit; + + parityCheck_compressed=new int * [M]; + for(i=0;i0;k--){ + for(i=k-1;i>=0;i--){ + if(H[i][k]==1) + for(j=k;jmax_row) max_row=imed; + } + generator_compressed=new int * [max_row]; + for(i=0;i=max_row-1) break; + index++; + } + } + } + for(j=0;jmax_col) max_col=imed; + } + parityCheck_compressed=new int * [M]; + for(i=0;i=max_col-1) break; + index++; + } + } + } + if(verbose) { + cout<<"****************************************************"< +#include // C++ I/O library header +#include "Random.h" + +class NodesInGraph{ + public: + int numOfConnectionParityBit; + int *connectionParityBit; + int numOfConnectionSymbolBit; + int *connectionSymbolBit; + int maxDegParity; + + NodesInGraph(void); + ~NodesInGraph(void); + void setNumOfConnectionSymbolBit(int deg); + void initConnectionParityBit(void); + void initConnectionParityBit(int deg); +}; + +class BigGirth { + public: + int M, N; + int K; + int EXPAND_DEPTH; + const char *filename; + int *(*H); + + int *localGirth; + + NodesInGraph *nodesInGraph; + Random *myrandom; + + BigGirth(int m, int n, int *symbolDegSequence, const char *filename, int sglConcent, int tgtGirth, bool verbose_ = true); + BigGirth(void); + + void writeToFile_Hcompressed(void); + void writeToFile_Hmatrix(void); + void writeToFile(void); + + void loadH(void); + + ~BigGirth(void); + + private: + int selectParityConnect(int kthSymbol, int mthConnection, int & cycle); + void updateConnection(int kthSymbol); + bool verbose; + +}; + +#endif diff --git a/lib/ldpc/peg/CodeName b/lib/ldpc/peg/CodeName new file mode 100644 index 000000000..118a63822 --- /dev/null +++ b/lib/ldpc/peg/CodeName @@ -0,0 +1,68 @@ +64 +16 +48 +14 +5 +3 1 3 6 1 4 1 1 1 1 2 1 1 1 1 6 6 2 2 1 1 2 2 1 2 6 2 6 1 1 2 1 1 6 3 2 6 2 1 1 6 1 1 2 1 1 1 7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +4 2 4 9 3 6 2 2 3 2 4 2 3 3 3 7 9 6 4 3 2 6 6 2 4 9 6 7 2 2 4 3 3 7 4 4 7 4 3 3 7 2 2 6 3 2 2 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6 3 6 10 4 9 4 4 4 4 5 4 4 4 4 8 10 8 5 4 3 7 7 4 6 13 9 9 4 4 5 4 4 8 6 5 8 5 4 4 9 4 4 8 4 3 4 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7 4 12 12 6 12 5 5 6 5 6 5 5 6 6 9 11 9 6 5 4 11 9 5 7 0 10 10 5 5 6 6 5 9 8 6 11 6 5 5 11 5 5 9 6 4 5 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9 5 16 15 9 15 6 6 7 6 7 6 6 9 7 10 12 11 8 6 5 13 13 6 8 0 11 11 6 6 9 8 6 11 11 8 12 7 6 6 13 6 6 12 10 5 6 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +10 6 0 16 11 16 8 7 9 8 8 7 7 12 8 11 13 13 9 11 6 14 14 8 9 0 13 12 8 9 11 9 7 12 12 10 13 8 8 7 0 8 7 15 12 6 8 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +13 8 0 0 13 0 10 8 13 9 10 10 9 13 9 12 14 15 11 13 7 16 16 9 13 0 15 13 10 11 16 11 11 13 16 12 14 9 11 10 0 9 11 0 13 12 9 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +15 12 0 0 14 0 11 10 15 11 12 11 10 15 11 13 15 0 13 14 12 0 0 12 14 0 0 14 14 13 0 14 13 0 0 15 0 11 12 13 0 10 12 0 15 13 10 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 13 0 0 15 0 12 12 16 12 14 14 14 16 14 14 0 0 15 15 14 0 0 13 0 0 0 15 15 15 0 15 14 0 0 16 0 13 13 14 0 12 14 0 16 14 11 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 15 0 0 16 0 14 14 0 13 15 0 16 0 16 16 0 0 16 16 15 0 0 14 0 0 0 16 0 16 0 16 16 0 0 0 0 14 15 16 0 14 15 0 0 15 12 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 16 0 0 0 0 15 15 0 15 16 0 0 0 0 0 0 0 0 0 16 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 15 16 0 0 15 0 0 0 16 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 16 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 9 49 58 64 +2 39 50 59 0 +3 6 51 57 63 +4 6 52 58 0 +5 20 53 57 0 +4 37 48 60 0 +7 36 49 59 62 +8 29 55 60 0 +9 14 55 60 0 +10 30 56 60 0 +11 31 48 61 64 +12 24 48 62 0 +13 40 57 61 0 +1 35 48 62 0 +15 32 55 63 0 +16 28 56 63 0 +17 28 55 64 0 +18 27 56 58 0 +19 31 56 61 63 +5 32 56 61 0 +21 43 51 59 64 +22 23 57 59 0 +22 44 48 58 0 +12 43 58 60 63 +25 38 53 59 63 +26 41 55 59 0 +18 44 59 60 61 +17 27 50 60 62 +29 42 57 60 64 +8 30 48 63 0 +19 38 55 62 64 +15 45 48 64 0 +20 33 55 63 0 +34 41 56 60 0 +14 45 57 58 0 +11 36 55 62 0 +34 37 57 62 0 +7 47 57 61 0 +2 46 56 62 0 +33 40 58 59 0 +3 35 56 59 0 +10 47 58 62 0 +21 46 55 61 0 +23 25 52 56 64 +13 39 48 64 0 +26 54 57 61 0 +24 42 58 61 0 +16 48 54 63 0 +49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 diff --git a/lib/ldpc/peg/CyclesOfGraph.C b/lib/ldpc/peg/CyclesOfGraph.C new file mode 100644 index 000000000..77c98b598 --- /dev/null +++ b/lib/ldpc/peg/CyclesOfGraph.C @@ -0,0 +1,237 @@ +#include "CyclesOfGraph.h" + +NodesOfGraph::NodesOfGraph(void) { parityConnections=NULL;symbolConnections=NULL; +} +NodesOfGraph::~NodesOfGraph(void) { + delete [] parityConnections; + delete [] symbolConnections; + delete [] symbolMapping; + +} + +void NodesOfGraph::setParityConnections(int num, int *value) { + numOfParityConnections=num; + parityConnections=new int[num]; + for(int i=0;itmpCycles[j]) + cyclesTable[i]=tmpCycles[j]; + } + //OUTPUT cycles per symbol node + //cout<<"i="<cyclesTable[i]) girth=cyclesTable[i]; + return(girth); +} + +void CyclesOfGraph::printCyclesTable(void){ + using namespace std; + int i, temp[20]; + /* + for(i=0;i +#include // C++ I/O library header +//#include + +class NodesOfGraph{ + public: + int numOfParityConnections; + int *parityConnections; + int numOfSymbolConnections; + int *symbolConnections; + int numOfSymbolMapping; + int *symbolMapping; + NodesOfGraph(void); + ~NodesOfGraph(void); + void setParityConnections(int num, int *value); + void setSymbolConnections(int num, int *value); + void setSymbolMapping(int num, int *values); +}; //Why this is necessary? + +class CyclesOfGraph { + public: + int M, N; + int *(*H); + int *cyclesTable; + NodesOfGraph *nodesOfGraph; + CyclesOfGraph(int mm, int n, int *(*h)); + ~CyclesOfGraph(void); + void getCyclesTable(void); + void printCyclesTable(void); + int girth(void); + private: + int *tmp, *med, *tmpCycles; +}; + +#endif + + diff --git a/lib/ldpc/peg/DenEvl_11.deg b/lib/ldpc/peg/DenEvl_11.deg new file mode 100644 index 000000000..18a77197c --- /dev/null +++ b/lib/ldpc/peg/DenEvl_11.deg @@ -0,0 +1,3 @@ +4 + 2 3 4 11 +0.450013 0.370771 0.0307238 0.1484922 diff --git a/lib/ldpc/peg/DenEvl_15.deg b/lib/ldpc/peg/DenEvl_15.deg new file mode 100644 index 000000000..3af8369d3 --- /dev/null +++ b/lib/ldpc/peg/DenEvl_15.deg @@ -0,0 +1,3 @@ +7 +2 3 4 5 7 14 15 +0.477081 0.280572 0.0349963 0.0963301 0.0090884 0.00137443 0.10055777 diff --git a/lib/ldpc/peg/DenEvl_20.deg b/lib/ldpc/peg/DenEvl_20.deg new file mode 100644 index 000000000..174d64657 --- /dev/null +++ b/lib/ldpc/peg/DenEvl_20.deg @@ -0,0 +1,4 @@ +9 +2 3 4 6 7 8 9 19 20 +0.457827 0.323775 0.0214226 0.0592851 0.0389015 0.0248109 0.00884569 +0.0176697 0.04746251 diff --git a/lib/ldpc/peg/DenEvl_7.deg b/lib/ldpc/peg/DenEvl_7.deg new file mode 100644 index 000000000..feb53aeec --- /dev/null +++ b/lib/ldpc/peg/DenEvl_7.deg @@ -0,0 +1,3 @@ +3 + 2 3 7 +0.521814 0.271293 0.206893 diff --git a/lib/ldpc/peg/DenEvl_9.deg b/lib/ldpc/peg/DenEvl_9.deg new file mode 100644 index 000000000..edc911ab6 --- /dev/null +++ b/lib/ldpc/peg/DenEvl_9.deg @@ -0,0 +1,3 @@ +3 + 2 2 9 +0.491281 0.335305 0.173414 diff --git a/lib/ldpc/peg/MainPEG b/lib/ldpc/peg/MainPEG new file mode 100755 index 0000000000000000000000000000000000000000..d660aa677bb0ceb8414648996d390f98147e0fbc GIT binary patch literal 63744 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 +#include +#include +#include +#include +#include +#include +#include +#include "BigGirth.h" +#include "Random.h" +#include "CyclesOfGraph.h" + +const double EPS = 1e-6; + +using namespace std; + +void usage() +{ + cout<<"*******************************************************************************************"< " <= argc) usage(); + M=atoi(argv[i]); + } else if(strcmp(argv[i], "-numN")==0) { + if (++i >= argc) usage(); + N=atoi(argv[i]); + } else if(strcmp(argv[i], "-codeName")==0) { + if (++i >= argc) usage(); + codeName = argv[i]; + } else if(strcmp(argv[i], "-degFileName")==0) { + if (++i >= argc) usage(); + degFileName = argv[i]; + } else if(strcmp(argv[i], "-sglConcent")==0) { + if (++i >= argc) usage(); + sglConcent=atoi(argv[i]); + } else if(strcmp(argv[i], "-tgtGirth")==0) { + if (++i >= argc) usage(); + targetGirth=atoi(argv[i]); + } else if(strcmp(argv[i], "-outputMode")==0) { + if (++i >= argc) usage(); + output_mode=atoi(argv[i]); + } else if(strcmp(argv[i], "-q")==0) { + verbose=false; + } else{ + usage(); + } + } + if (M == -1 || N == -1) { + cout<<"Error: M or N not specified!"<N) { + cout<<"Error: M must be smaller than N!"< degSeq(N); + + ifstream infn(degFileName.c_str()); + if (!infn) {cout << "\nCannot open file " << degFileName << endl; exit(-1); } + int m; + infn >>m; + std::vector deg(m); + std::vector degFrac(m); + for(int i=0;i>deg[i]; + for(int i=0;i>degFrac[i]; + infn.close(); + double dtmp=0.0; + for(int i=0;iEPS) { + cout.setf(ios::fixed, ios::floatfield); + cout <<"\n Invalid degree distribution (node perspective): sum != 1.0 but "<=0;--j) { + if(dtmp>degFrac[j]) break; + } + if(dtmp +# Thu May 12 12:38:41 SAST 2005 + +PROGRAM = MainPEG +OBJECTS = MainPEG.o Random.o CyclesOfGraph.o BigGirth.o + +CXX = g++ +CXXFLAGS = -g -ansi -pedantic -Wno-deprecated -Wall -O2 +#CXXFLAGS = -g -ansi -pedantic -Wall -march=native -ftree-vectorize -O3 + +.SUFFIXES: .o .C + +all: ${OBJECTS} + $(CXX) -o ${PROGRAM} ${OBJECTS} + +.C.o: $< + $(CXX) ${CXXFLAGS} -c $< -o $@ + +.PHONY : clean + +clean: + rm -f ${OBJECTS} ${PROGRAM} *~ *.log + diff --git a/lib/ldpc/peg/Random.C b/lib/ldpc/peg/Random.C new file mode 100644 index 000000000..3c5d54387 --- /dev/null +++ b/lib/ldpc/peg/Random.C @@ -0,0 +1,101 @@ + +#include +#include +#include "Random.h" + +void Random::bubbleSort(int a[], int size) +{ + for(int pass=1; passa[i+1]){ + std::swap(a[i], a[i+1]); + } + } +} + +double Random::gauss(double sdev, double mean) +{ + double sum=0.0; + for (int i=1;i<=12;++i) + { + seed_u = 1664525lu * seed_u + 123456789lu; + sum+=double(seed_u); + } + return (sum/4.29497e9-6.0)*sdev+mean; +} + +double Random::uniform(double a, double b) +{ + double t; + for(int i=0; i<10;i++){ + seed=2045*seed+1; + //seed=seed -(seed/1048576)*1048576; + seed%=1048576; + } + t=seed/1048576.0; + t=a+(b-a)*t; + return(t); +} + +int Random::uniform(int a, int b) // [a, b-1] +{ + double t; + int i, tt; + if(b==a+1) return(a); + for(i=0; i<10;i++){ + seed=2045*seed+1; + //seed=seed -(seed/1048576)*1048576; + seed%=1048576; + } + t=seed/1048576.0; + t=a+(b-a)*t; + tt=(int)t; + if(tt=b) tt=b-1; + return(tt); +} + +int Random::nonUniform(int a, int b) // [a, b-1] +{ + double t; + int i, tt; + if(b==a+1) return(a); + for(i=0; i<10;i++){ + seed=2045*seed+1; + //seed=seed -(seed/1048576)*1048576; + seed%=1048576; + } + t=seed/1048576.0; + t=a+(b-a)*pow(t, 0.6667); //t^1.5 + tt=(int)t; + if(tt=b) tt=b-1; + return(tt); +} + +/* +void m_uniform(int a , int b, long int *seed, int *itmp, int num) +{ + int index, imed, i, k; + + index=0; + itmp[0]=uniform(a, b, seed); + Loop1: + imed=uniform(a, b, seed); + k=0; + for(i=0;i<=index;i++) + if(imed==itmp[i]) {k=1; break;} + if(k==0) {index++; itmp[index]=imed;} + if(index +// #include + +class Random{ + private: + + unsigned long int seed; //previously LONG INT + unsigned long int seed_u; + + public: + + Random(void) { + this->seed=987654321u; + this->seed_u=123456789lu; + } + ~Random(void){;} + void bubbleSort(int a[], int size); + double gauss(double sdev, double mean); + double uniform(double a, double b); + int uniform(int a, int b); // [a, b) + int nonUniform(int a, int b); + +}; + +#endif diff --git a/lib/ldpc/peg/Reg_2.deg b/lib/ldpc/peg/Reg_2.deg new file mode 100644 index 000000000..28d2c8f1d --- /dev/null +++ b/lib/ldpc/peg/Reg_2.deg @@ -0,0 +1,3 @@ +1 +2 +1.0 diff --git a/lib/ldpc/peg/Reg_3.deg b/lib/ldpc/peg/Reg_3.deg new file mode 100644 index 000000000..0fb5a574c --- /dev/null +++ b/lib/ldpc/peg/Reg_3.deg @@ -0,0 +1,3 @@ +1 +3 +1.0 diff --git a/lib/ldpc/peg/Reg_4.deg b/lib/ldpc/peg/Reg_4.deg new file mode 100644 index 000000000..b42df5000 --- /dev/null +++ b/lib/ldpc/peg/Reg_4.deg @@ -0,0 +1,3 @@ +1 +4 +1.0 diff --git a/lib/ldpc/peg/ldpc-peg-128-80.alist b/lib/ldpc/peg/ldpc-peg-128-80.alist new file mode 100644 index 000000000..a25da9a35 --- /dev/null +++ b/lib/ldpc/peg/ldpc-peg-128-80.alist @@ -0,0 +1,180 @@ +48 128 +9 4 +9 9 9 9 9 8 8 8 8 8 9 9 8 8 9 9 8 8 8 8 9 9 9 8 9 9 9 9 9 9 8 8 8 9 8 9 9 9 8 9 8 8 8 9 8 8 8 9 +3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +1 17 34 51 66 81 99 111 124 +2 18 35 50 67 82 100 112 125 +3 19 36 52 68 82 101 111 126 +2 20 36 51 69 83 102 113 127 +4 19 37 53 66 84 103 114 128 +5 21 38 54 70 85 92 114 0 +6 22 39 55 66 85 96 110 0 +7 23 32 56 71 86 103 115 0 +8 20 40 55 72 86 104 116 0 +9 19 41 57 73 87 105 116 0 +10 24 36 56 74 88 105 117 125 +10 17 33 47 75 89 106 118 128 +11 21 42 51 76 87 107 119 0 +1 25 40 58 74 84 107 113 0 +12 22 42 49 77 90 108 118 125 +13 26 43 59 68 89 104 120 124 +13 22 44 57 75 91 109 113 0 +12 23 37 46 78 88 107 112 0 +3 27 34 60 65 87 109 118 0 +6 27 45 61 79 89 98 112 0 +14 28 34 62 72 92 106 112 127 +8 27 42 59 71 92 110 121 126 +15 20 46 57 79 93 101 115 124 +9 29 45 62 74 94 108 121 0 +8 30 38 63 73 95 109 111 128 +16 29 47 64 69 96 109 117 126 +16 23 48 63 76 94 110 116 125 +7 25 39 52 70 97 106 117 124 +4 26 45 63 67 83 90 119 123 +15 28 39 50 76 88 103 121 123 +15 26 33 58 65 97 102 122 0 +14 31 47 52 77 81 93 116 0 +14 24 37 61 71 82 99 122 0 +4 31 40 54 80 91 106 115 122 +5 32 41 58 77 98 104 117 0 +9 18 49 65 79 85 104 119 128 +10 30 43 60 69 84 108 115 123 +1 18 43 48 73 91 98 114 127 +3 21 46 64 67 86 108 113 0 +5 24 48 55 75 93 107 120 126 +2 32 44 62 80 95 99 114 0 +16 28 41 59 80 83 100 118 0 +11 33 35 53 72 96 105 111 0 +11 25 44 60 78 90 100 120 122 +6 31 35 56 70 95 102 121 0 +12 17 50 54 68 94 105 119 0 +13 29 38 53 78 97 110 123 0 +7 30 49 61 64 81 101 120 127 +1 14 38 0 +2 4 41 0 +3 19 39 0 +5 29 34 0 +6 35 40 0 +7 20 45 0 +8 28 48 0 +9 22 25 0 +10 24 36 0 +11 12 37 0 +13 43 44 0 +15 18 46 0 +16 17 47 0 +21 32 33 0 +23 30 31 0 +26 27 42 0 +1 12 46 0 +2 36 38 0 +3 5 10 0 +4 9 23 0 +6 13 39 0 +7 15 17 0 +8 18 27 0 +11 33 40 0 +14 28 44 0 +16 29 31 0 +19 20 22 0 +21 30 42 0 +24 26 47 0 +25 37 48 0 +32 34 45 0 +8 35 41 0 +12 31 43 0 +1 19 21 0 +2 43 45 0 +3 4 11 0 +5 18 33 0 +6 25 47 0 +7 28 30 0 +9 14 34 0 +10 35 42 0 +13 15 22 0 +16 37 38 0 +17 41 44 0 +20 24 29 0 +18 23 39 0 +12 26 32 0 +27 38 40 0 +15 36 48 0 +2 30 46 0 +1 4 13 0 +3 28 32 0 +5 43 47 0 +6 34 46 0 +7 9 40 0 +8 11 45 0 +10 17 23 0 +14 31 35 0 +16 22 42 0 +19 37 44 0 +20 33 48 0 +21 24 41 0 +25 27 29 0 +26 39 48 0 +19 31 36 0 +1 5 7 0 +2 29 39 0 +3 16 46 0 +4 26 37 0 +6 28 45 0 +8 22 33 0 +9 21 43 0 +10 25 38 0 +11 14 24 0 +12 17 40 0 +13 27 30 0 +15 32 35 0 +18 44 47 0 +20 23 36 0 +34 41 42 0 +1 32 48 0 +2 3 33 0 +4 29 42 0 +5 14 37 0 +6 7 36 0 +8 9 39 0 +10 13 19 0 +11 18 30 0 +12 16 20 0 +15 29 44 0 +17 34 38 0 +6 21 22 0 +23 32 40 0 +24 27 46 0 +25 41 45 0 +7 26 43 0 +28 31 47 0 +20 35 38 0 +1 33 41 0 +2 42 44 0 +3 23 48 0 +4 31 45 0 +5 8 30 0 +9 16 35 36 +10 11 43 46 +12 21 28 34 +13 14 18 40 +15 24 37 39 +17 19 25 26 +7 22 27 47 +1 3 25 43 +2 18 20 21 +4 14 17 39 +5 6 38 41 +8 23 34 37 +9 10 27 32 +11 26 28 35 +12 15 19 42 +13 29 36 46 +16 40 44 48 +22 24 30 45 +31 33 34 44 +29 30 37 47 +1 16 23 28 +2 11 15 27 +3 22 26 40 +4 21 38 48 +5 12 25 36 diff --git a/lib/ldpc/peg/leftHandGirth.log b/lib/ldpc/peg/leftHandGirth.log new file mode 100644 index 000000000..bcaf4e985 --- /dev/null +++ b/lib/ldpc/peg/leftHandGirth.log @@ -0,0 +1 @@ +inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf inf 20 12 12 12 12 12 12 12 12 10 10 10 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 diff --git a/lib/ldpc/peg/peg-128-64-reg4.alist b/lib/ldpc/peg/peg-128-64-reg4.alist new file mode 100644 index 000000000..30c8edf97 --- /dev/null +++ b/lib/ldpc/peg/peg-128-64-reg4.alist @@ -0,0 +1,196 @@ +64 128 +9 4 +8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 8 8 8 8 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +1 17 33 50 67 83 98 114 0 +2 18 34 50 68 84 99 115 0 +3 19 35 51 69 85 100 115 0 +4 20 36 52 70 86 101 115 0 +2 20 35 53 71 87 102 113 128 +5 21 33 54 64 88 103 116 0 +6 19 37 55 72 89 98 117 0 +7 22 38 56 73 90 96 116 0 +8 23 34 57 72 91 104 118 0 +7 24 39 58 74 84 100 119 0 +9 22 40 59 74 92 105 120 0 +9 25 41 55 75 91 106 114 0 +10 25 36 51 67 74 107 121 0 +11 22 36 54 72 93 102 122 0 +12 25 42 60 76 89 103 123 0 +8 26 38 51 77 93 105 124 0 +13 27 40 61 77 94 99 119 0 +13 17 43 54 73 85 108 124 0 +1 28 40 62 71 84 108 125 0 +12 29 38 53 67 86 108 126 0 +14 28 43 51 78 94 96 117 0 +11 17 42 62 79 92 104 126 0 +4 29 39 57 65 87 109 116 0 +2 27 38 55 78 79 107 127 0 +13 24 44 53 66 83 103 117 0 +15 30 43 55 67 90 105 128 0 +6 22 45 48 78 88 106 119 0 +14 25 33 63 65 73 99 118 0 +6 31 46 64 80 95 102 125 0 +5 18 37 65 79 94 110 113 0 +14 23 44 59 71 88 111 123 0 +13 32 47 62 70 91 109 128 0 +15 23 41 56 76 95 112 0 0 +11 29 41 47 68 69 105 117 0 +10 30 37 64 73 86 111 119 0 +5 32 45 60 69 96 101 127 0 +15 24 48 62 65 96 97 115 0 +3 23 42 64 77 83 109 0 0 +16 18 40 52 69 89 102 112 0 +9 20 49 63 76 94 109 121 0 +15 20 33 66 77 84 110 127 0 +10 21 44 60 80 82 112 126 0 +16 26 41 58 81 92 107 125 0 +3 27 48 59 82 95 110 118 0 +10 27 49 57 71 89 101 124 0 +4 26 42 61 68 90 100 122 0 +6 26 44 50 75 85 101 118 0 +7 28 37 47 66 76 82 114 0 +12 19 43 52 80 88 104 121 0 +2 31 47 56 75 93 108 123 0 +1 31 36 59 81 87 104 124 0 +3 32 39 50 81 97 106 121 0 +12 24 34 54 79 90 98 120 0 +1 19 49 56 82 92 103 122 0 +7 21 35 61 70 93 106 125 0 +14 18 46 60 70 97 107 122 0 +8 31 39 61 63 86 98 127 128 +4 28 34 45 75 97 110 126 0 +16 30 45 63 72 95 100 113 0 +8 21 48 52 74 87 111 114 0 +9 32 46 58 68 83 113 123 0 +11 30 46 53 81 91 99 116 0 +5 29 49 58 78 85 112 120 0 +16 17 35 57 66 80 111 120 0 +1 19 51 54 +2 5 24 50 +3 38 44 52 +4 23 46 58 +6 30 36 63 +7 27 29 47 +8 10 48 55 +9 16 57 60 +11 12 40 61 +13 35 42 45 +14 22 34 62 +15 20 49 53 +17 18 25 32 +21 28 31 56 +26 33 37 41 +39 43 59 64 +1 18 22 64 +2 30 39 56 +3 7 49 54 +4 5 40 41 +6 42 55 60 +8 11 14 27 +9 31 33 38 +10 25 37 53 +12 13 15 28 +16 43 46 47 +17 24 44 45 +19 21 48 58 +20 23 34 63 +26 35 59 62 +29 50 51 57 +32 36 52 61 +1 6 28 41 +2 9 53 58 +3 5 55 64 +4 13 14 51 +7 30 35 48 +8 16 20 24 +10 23 52 57 +11 17 19 39 +12 33 34 43 +15 22 38 46 +18 21 26 49 +25 31 42 47 +27 36 58 59 +29 56 61 62 +32 34 48 50 +27 37 44 60 +40 45 54 63 +1 2 47 52 +3 13 16 21 +4 39 49 60 +5 20 25 62 +6 14 18 53 +7 12 24 26 +8 33 50 54 +9 23 45 64 +10 43 61 63 +11 31 44 51 +15 36 42 56 +17 46 55 57 +19 22 32 37 +28 40 57 59 +6 29 35 38 +23 28 30 37 +25 41 48 64 +1 13 20 26 +2 34 46 61 +3 34 36 39 +4 32 55 56 +5 19 31 45 +7 9 14 59 +8 18 28 35 +10 11 13 60 +12 47 50 58 +15 33 40 48 +16 17 38 41 +21 24 27 63 +22 24 30 53 +29 42 49 64 +43 51 52 62 +42 44 48 54 +1 25 38 61 +2 10 19 41 +3 18 47 63 +4 20 35 57 +5 23 51 60 +6 27 31 49 +7 15 39 45 +8 26 46 53 +9 12 32 62 +11 22 43 54 +14 16 50 55 +17 21 30 40 +29 33 44 59 +8 21 36 37 +37 52 56 58 +1 7 53 57 +2 17 28 62 +3 10 46 59 +4 36 45 47 +5 14 29 39 +6 15 25 54 +9 22 49 51 +11 16 26 34 +12 27 52 55 +13 24 43 56 +18 19 20 50 +23 32 38 40 +30 41 44 58 +31 35 60 64 +33 39 42 63 +5 30 59 61 +1 12 48 60 +2 3 4 37 +6 8 23 62 +7 21 25 34 +9 28 44 47 +10 17 27 35 +11 53 63 64 +13 40 49 52 +14 46 54 56 +15 31 50 61 +16 18 45 51 +19 29 43 55 +20 22 42 58 +24 36 41 57 +5 26 32 57 diff --git a/lib/ldpc/peg/peg-128-64-reg4.code b/lib/ldpc/peg/peg-128-64-reg4.code new file mode 100644 index 000000000..5e99ac6a3 --- /dev/null +++ b/lib/ldpc/peg/peg-128-64-reg4.code @@ -0,0 +1,67 @@ +128 +64 +9 +1 17 33 50 67 83 98 114 0 +2 18 34 50 68 84 99 115 0 +3 19 35 51 69 85 100 115 0 +4 20 36 52 70 86 101 115 0 +2 20 35 53 71 87 102 113 128 +5 21 33 54 64 88 103 116 0 +6 19 37 55 72 89 98 117 0 +7 22 38 56 73 90 96 116 0 +8 23 34 57 72 91 104 118 0 +7 24 39 58 74 84 100 119 0 +9 22 40 59 74 92 105 120 0 +9 25 41 55 75 91 106 114 0 +10 25 36 51 67 74 107 121 0 +11 22 36 54 72 93 102 122 0 +12 25 42 60 76 89 103 123 0 +8 26 38 51 77 93 105 124 0 +13 27 40 61 77 94 99 119 0 +13 17 43 54 73 85 108 124 0 +1 28 40 62 71 84 108 125 0 +12 29 38 53 67 86 108 126 0 +14 28 43 51 78 94 96 117 0 +11 17 42 62 79 92 104 126 0 +4 29 39 57 65 87 109 116 0 +2 27 38 55 78 79 107 127 0 +13 24 44 53 66 83 103 117 0 +15 30 43 55 67 90 105 128 0 +6 22 45 48 78 88 106 119 0 +14 25 33 63 65 73 99 118 0 +6 31 46 64 80 95 102 125 0 +5 18 37 65 79 94 110 113 0 +14 23 44 59 71 88 111 123 0 +13 32 47 62 70 91 109 128 0 +15 23 41 56 76 95 112 0 0 +11 29 41 47 68 69 105 117 0 +10 30 37 64 73 86 111 119 0 +5 32 45 60 69 96 101 127 0 +15 24 48 62 65 96 97 115 0 +3 23 42 64 77 83 109 0 0 +16 18 40 52 69 89 102 112 0 +9 20 49 63 76 94 109 121 0 +15 20 33 66 77 84 110 127 0 +10 21 44 60 80 82 112 126 0 +16 26 41 58 81 92 107 125 0 +3 27 48 59 82 95 110 118 0 +10 27 49 57 71 89 101 124 0 +4 26 42 61 68 90 100 122 0 +6 26 44 50 75 85 101 118 0 +7 28 37 47 66 76 82 114 0 +12 19 43 52 80 88 104 121 0 +2 31 47 56 75 93 108 123 0 +1 31 36 59 81 87 104 124 0 +3 32 39 50 81 97 106 121 0 +12 24 34 54 79 90 98 120 0 +1 19 49 56 82 92 103 122 0 +7 21 35 61 70 93 106 125 0 +14 18 46 60 70 97 107 122 0 +8 31 39 61 63 86 98 127 128 +4 28 34 45 75 97 110 126 0 +16 30 45 63 72 95 100 113 0 +8 21 48 52 74 87 111 114 0 +9 32 46 58 68 83 113 123 0 +11 30 46 53 81 91 99 116 0 +5 29 49 58 78 85 112 120 0 +16 17 35 57 66 80 111 120 0 diff --git a/lib/ldpc/peg/peg-128-72-reg4.alist b/lib/ldpc/peg/peg-128-72-reg4.alist new file mode 100644 index 000000000..6bb420a56 --- /dev/null +++ b/lib/ldpc/peg/peg-128-72-reg4.alist @@ -0,0 +1,188 @@ +56 128 +10 4 +9 9 9 9 9 9 9 9 10 9 9 9 9 9 9 9 9 10 9 9 9 9 10 9 10 9 9 9 9 9 10 9 9 9 9 9 9 9 9 9 9 9 10 9 9 9 10 10 9 9 9 10 9 9 9 8 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +1 15 30 44 58 71 84 100 115 0 +2 16 31 44 59 72 86 101 116 0 +3 17 31 45 60 73 87 102 117 0 +2 18 32 46 58 73 85 103 112 0 +4 19 32 47 61 74 88 104 118 0 +5 20 33 48 62 75 88 105 116 0 +6 19 34 49 63 76 89 105 119 0 +7 15 27 45 64 77 88 106 120 0 +8 15 35 50 59 75 90 107 121 127 +7 21 33 51 65 73 91 108 114 0 +9 22 30 46 59 78 92 99 122 0 +9 19 35 52 60 71 93 109 120 0 +10 20 31 53 63 79 93 107 123 0 +11 15 36 53 66 78 85 110 124 0 +8 23 37 49 67 71 86 111 118 0 +12 22 34 54 68 80 94 109 114 0 +1 24 34 52 65 75 87 97 123 0 +13 25 29 43 69 81 85 100 121 128 +12 17 38 55 63 82 90 101 125 0 +11 26 39 47 56 76 95 106 117 0 +2 27 40 49 69 74 94 108 117 0 +4 16 30 55 64 76 91 103 126 0 +13 17 28 47 65 80 96 111 124 126 +6 18 36 51 70 83 94 111 121 0 +13 16 34 48 57 82 95 112 120 127 +6 28 40 48 58 79 90 113 122 0 +5 27 41 46 67 83 91 109 127 0 +14 16 42 54 63 78 97 100 118 0 +13 27 39 52 70 84 90 114 118 0 +10 22 42 47 64 81 98 110 116 0 +11 22 29 55 60 84 97 108 111 127 +5 26 37 55 57 74 96 98 128 0 +3 21 35 54 62 82 98 104 113 0 +14 21 43 50 68 77 93 110 117 0 +9 24 33 56 69 72 89 110 112 0 +12 26 42 53 62 73 89 99 121 0 +10 25 35 41 57 76 97 101 122 0 +10 18 39 44 66 77 99 102 119 0 +3 29 40 44 61 83 93 106 125 0 +4 23 39 45 65 85 89 107 113 0 +6 26 30 43 61 80 86 108 123 0 +7 19 31 57 69 83 99 113 124 0 +3 24 37 43 66 84 92 105 120 126 +2 24 38 50 70 71 88 102 122 0 +1 20 32 51 68 81 86 102 124 0 +12 23 41 51 59 74 87 106 115 0 +14 28 37 46 62 72 95 114 115 125 +1 28 41 49 61 82 92 103 116 128 +7 25 38 56 60 75 98 103 115 0 +8 29 33 45 58 78 96 109 119 0 +4 25 36 54 67 77 96 105 123 0 +14 20 38 52 66 80 91 104 112 128 +8 18 42 56 68 79 87 104 125 0 +9 23 40 53 70 81 95 101 126 0 +11 21 32 48 67 72 94 107 119 0 +5 17 36 50 64 79 92 100 0 0 +1 17 45 48 +2 4 21 44 +3 33 39 43 +5 22 40 51 +6 27 32 56 +7 24 26 41 +8 10 42 49 +9 15 50 53 +11 12 35 54 +13 30 37 38 +14 20 31 55 +16 19 36 46 +18 23 25 29 +28 34 47 52 +1 8 9 14 +2 22 25 28 +3 19 23 56 +4 24 38 53 +5 7 12 42 +6 13 45 52 +10 33 34 55 +11 16 30 31 +15 40 46 54 +17 35 43 44 +18 37 49 51 +20 32 36 41 +8 21 27 29 +23 26 47 48 +18 31 39 50 +1 11 22 41 +2 3 13 42 +4 5 45 55 +6 10 35 50 +7 16 17 25 +9 12 33 37 +14 24 51 56 +15 32 43 47 +19 44 49 52 +20 29 38 40 +21 26 39 54 +27 37 46 48 +28 30 36 53 +18 34 41 43 +1 2 38 39 +3 8 40 50 +4 11 27 47 +5 20 23 30 +6 25 26 55 +7 15 21 48 +9 34 44 56 +10 24 45 46 +12 17 29 52 +13 14 36 54 +16 28 33 51 +19 22 31 32 +20 35 49 53 +25 32 37 42 +1 4 26 50 +2 9 11 46 +3 12 31 49 +5 39 41 48 +6 33 36 47 +7 13 19 28 +8 22 30 56 +10 17 23 40 +14 38 43 52 +15 27 51 55 +16 34 45 53 +18 21 35 42 +24 29 44 54 +1 12 15 44 +2 35 47 55 +3 4 10 36 +5 21 32 46 +6 9 17 49 +7 20 22 37 +8 34 38 51 +11 14 28 50 +13 26 53 56 +16 23 41 52 +18 30 45 54 +19 25 33 48 +24 27 39 42 +1 29 31 43 +4 14 18 40 +2 15 41 45 +3 17 46 53 +5 6 8 44 +7 35 36 40 +9 19 26 29 +10 22 27 52 +11 43 48 56 +12 13 34 39 +16 21 24 55 +20 25 47 54 +23 32 50 51 +17 28 31 37 +30 32 33 49 +11 36 38 42 +1 18 28 56 +2 19 37 54 +3 38 44 45 +4 22 48 49 +5 33 52 53 +6 7 43 51 +8 20 39 46 +9 13 40 55 +10 21 31 41 +12 16 27 50 +14 30 34 35 +15 23 24 31 +4 25 35 52 +26 33 40 42 +10 16 29 47 +1 46 47 49 +2 6 30 48 +3 20 21 34 +5 15 28 29 +7 38 50 55 +8 12 25 43 +9 18 24 36 +11 26 37 44 +13 17 41 51 +14 23 42 45 +19 39 47 53 +22 23 43 54 +9 25 27 31 +18 32 48 52 diff --git a/lib/ldpc/peg/peg-128-72-reg4.code b/lib/ldpc/peg/peg-128-72-reg4.code new file mode 100644 index 000000000..09108dbff --- /dev/null +++ b/lib/ldpc/peg/peg-128-72-reg4.code @@ -0,0 +1,59 @@ +128 +56 +10 +1 15 30 44 58 71 84 100 115 0 +2 16 31 44 59 72 86 101 116 0 +3 17 31 45 60 73 87 102 117 0 +2 18 32 46 58 73 85 103 112 0 +4 19 32 47 61 74 88 104 118 0 +5 20 33 48 62 75 88 105 116 0 +6 19 34 49 63 76 89 105 119 0 +7 15 27 45 64 77 88 106 120 0 +8 15 35 50 59 75 90 107 121 127 +7 21 33 51 65 73 91 108 114 0 +9 22 30 46 59 78 92 99 122 0 +9 19 35 52 60 71 93 109 120 0 +10 20 31 53 63 79 93 107 123 0 +11 15 36 53 66 78 85 110 124 0 +8 23 37 49 67 71 86 111 118 0 +12 22 34 54 68 80 94 109 114 0 +1 24 34 52 65 75 87 97 123 0 +13 25 29 43 69 81 85 100 121 128 +12 17 38 55 63 82 90 101 125 0 +11 26 39 47 56 76 95 106 117 0 +2 27 40 49 69 74 94 108 117 0 +4 16 30 55 64 76 91 103 126 0 +13 17 28 47 65 80 96 111 124 126 +6 18 36 51 70 83 94 111 121 0 +13 16 34 48 57 82 95 112 120 127 +6 28 40 48 58 79 90 113 122 0 +5 27 41 46 67 83 91 109 127 0 +14 16 42 54 63 78 97 100 118 0 +13 27 39 52 70 84 90 114 118 0 +10 22 42 47 64 81 98 110 116 0 +11 22 29 55 60 84 97 108 111 127 +5 26 37 55 57 74 96 98 128 0 +3 21 35 54 62 82 98 104 113 0 +14 21 43 50 68 77 93 110 117 0 +9 24 33 56 69 72 89 110 112 0 +12 26 42 53 62 73 89 99 121 0 +10 25 35 41 57 76 97 101 122 0 +10 18 39 44 66 77 99 102 119 0 +3 29 40 44 61 83 93 106 125 0 +4 23 39 45 65 85 89 107 113 0 +6 26 30 43 61 80 86 108 123 0 +7 19 31 57 69 83 99 113 124 0 +3 24 37 43 66 84 92 105 120 126 +2 24 38 50 70 71 88 102 122 0 +1 20 32 51 68 81 86 102 124 0 +12 23 41 51 59 74 87 106 115 0 +14 28 37 46 62 72 95 114 115 125 +1 28 41 49 61 82 92 103 116 128 +7 25 38 56 60 75 98 103 115 0 +8 29 33 45 58 78 96 109 119 0 +4 25 36 54 67 77 96 105 123 0 +14 20 38 52 66 80 91 104 112 128 +8 18 42 56 68 79 87 104 125 0 +9 23 40 53 70 81 95 101 126 0 +11 21 32 48 67 72 94 107 119 0 +5 17 36 50 64 79 92 100 0 0 diff --git a/lib/ldpc/peg/peg-128-80-reg3.alist b/lib/ldpc/peg/peg-128-80-reg3.alist new file mode 100644 index 000000000..e2d9e15f9 --- /dev/null +++ b/lib/ldpc/peg/peg-128-80-reg3.alist @@ -0,0 +1,180 @@ +48 128 +8 3 +8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +1 17 34 51 66 81 99 113 +2 18 35 50 67 82 100 114 +3 19 36 52 68 82 101 115 +2 20 36 51 69 83 102 116 +4 19 37 53 66 84 103 117 +5 21 38 54 70 85 92 114 +6 22 39 55 66 85 96 118 +7 23 32 56 71 86 103 119 +8 20 40 55 72 86 104 120 +9 19 41 57 73 87 105 121 +10 24 36 56 74 88 106 122 +10 17 33 47 75 89 107 119 +11 21 42 51 76 87 108 123 +1 25 40 58 74 84 109 124 +12 22 42 49 77 90 110 122 +13 26 43 59 68 89 104 113 +13 22 44 57 75 91 106 125 +12 23 37 46 78 88 109 113 +3 27 34 60 65 87 111 126 +6 27 45 61 79 89 98 114 +14 28 34 62 72 92 107 125 +8 27 42 59 71 92 112 117 +15 20 46 57 79 93 101 117 +9 29 45 62 74 94 108 127 +8 30 38 63 73 95 110 125 +16 29 47 64 69 96 110 128 +16 23 48 63 76 94 111 121 +7 25 39 52 70 97 108 116 +4 26 45 63 67 83 90 126 +15 28 39 50 76 88 103 115 +15 26 33 58 65 97 102 127 +14 31 47 52 77 81 93 121 +14 24 37 61 71 82 99 116 +4 31 40 54 80 91 107 122 +5 32 41 58 77 98 111 120 +9 18 49 65 79 85 104 123 +10 30 43 60 69 84 112 123 +1 18 43 48 73 91 98 119 +3 21 46 64 67 86 112 118 +5 24 48 55 75 93 105 128 +2 32 44 62 80 95 99 124 +16 28 41 59 80 83 100 118 +11 33 35 53 72 96 109 115 +11 25 44 60 78 90 100 128 +6 31 35 56 70 95 102 126 +12 17 50 54 68 94 106 120 +13 29 38 53 78 97 105 124 +7 30 49 61 64 81 101 127 +1 14 38 +2 4 41 +3 19 39 +5 29 34 +6 35 40 +7 20 45 +8 28 48 +9 22 25 +10 24 36 +11 12 37 +13 43 44 +15 18 46 +16 17 47 +21 32 33 +23 30 31 +26 27 42 +1 12 46 +2 36 38 +3 5 10 +4 9 23 +6 13 39 +7 15 17 +8 18 27 +11 33 40 +14 28 44 +16 29 31 +19 20 22 +21 30 42 +24 26 47 +25 37 48 +32 34 45 +8 35 41 +12 31 43 +1 19 21 +2 43 45 +3 4 11 +5 18 33 +6 25 47 +7 28 30 +9 14 34 +10 35 42 +13 15 22 +16 37 38 +17 41 44 +20 24 29 +18 23 39 +12 26 32 +27 38 40 +15 36 48 +2 30 46 +1 4 13 +3 28 32 +5 43 47 +6 34 46 +7 9 40 +8 11 45 +10 17 23 +14 31 35 +16 22 42 +19 37 44 +20 33 48 +21 24 41 +25 27 29 +26 39 48 +19 31 36 +1 5 7 +2 29 39 +3 16 46 +4 26 37 +6 28 45 +8 22 33 +9 21 43 +10 25 38 +11 14 24 +12 17 40 +13 27 30 +15 32 35 +18 44 47 +20 23 36 +34 41 42 +1 32 48 +2 3 33 +4 29 42 +5 14 37 +6 7 36 +8 9 39 +10 13 19 +11 18 30 +12 16 20 +15 29 44 +17 34 38 +6 21 22 +23 32 40 +24 27 46 +25 41 45 +7 26 43 +28 31 47 +20 35 38 +1 33 41 +2 42 44 +3 23 48 +4 31 45 +5 8 30 +9 16 36 +10 40 47 +11 17 46 +12 21 34 +13 24 28 +14 18 43 +15 25 26 +19 27 35 +22 37 39 +1 16 18 +2 6 20 +3 30 43 +4 28 33 +5 22 23 +7 39 42 +8 12 38 +9 35 46 +10 27 32 +11 15 34 +13 36 37 +14 41 47 +17 21 25 +19 29 45 +24 31 48 +26 40 44 diff --git a/lib/ldpc/peg/peg-128-80-reg3.code b/lib/ldpc/peg/peg-128-80-reg3.code new file mode 100644 index 000000000..10064e072 --- /dev/null +++ b/lib/ldpc/peg/peg-128-80-reg3.code @@ -0,0 +1,51 @@ +128 +48 +8 +1 17 34 51 66 81 99 113 +2 18 35 50 67 82 100 114 +3 19 36 52 68 82 101 115 +2 20 36 51 69 83 102 116 +4 19 37 53 66 84 103 117 +5 21 38 54 70 85 92 114 +6 22 39 55 66 85 96 118 +7 23 32 56 71 86 103 119 +8 20 40 55 72 86 104 120 +9 19 41 57 73 87 105 121 +10 24 36 56 74 88 106 122 +10 17 33 47 75 89 107 119 +11 21 42 51 76 87 108 123 +1 25 40 58 74 84 109 124 +12 22 42 49 77 90 110 122 +13 26 43 59 68 89 104 113 +13 22 44 57 75 91 106 125 +12 23 37 46 78 88 109 113 +3 27 34 60 65 87 111 126 +6 27 45 61 79 89 98 114 +14 28 34 62 72 92 107 125 +8 27 42 59 71 92 112 117 +15 20 46 57 79 93 101 117 +9 29 45 62 74 94 108 127 +8 30 38 63 73 95 110 125 +16 29 47 64 69 96 110 128 +16 23 48 63 76 94 111 121 +7 25 39 52 70 97 108 116 +4 26 45 63 67 83 90 126 +15 28 39 50 76 88 103 115 +15 26 33 58 65 97 102 127 +14 31 47 52 77 81 93 121 +14 24 37 61 71 82 99 116 +4 31 40 54 80 91 107 122 +5 32 41 58 77 98 111 120 +9 18 49 65 79 85 104 123 +10 30 43 60 69 84 112 123 +1 18 43 48 73 91 98 119 +3 21 46 64 67 86 112 118 +5 24 48 55 75 93 105 128 +2 32 44 62 80 95 99 124 +16 28 41 59 80 83 100 118 +11 33 35 53 72 96 109 115 +11 25 44 60 78 90 100 128 +6 31 35 56 70 95 102 126 +12 17 50 54 68 94 106 120 +13 29 38 53 78 97 105 124 +7 30 49 61 64 81 101 127 diff --git a/lib/ldpc/peg/peg-128-80-reg4.alist b/lib/ldpc/peg/peg-128-80-reg4.alist new file mode 100644 index 000000000..2487ea9be --- /dev/null +++ b/lib/ldpc/peg/peg-128-80-reg4.alist @@ -0,0 +1,180 @@ +48 128 +12 4 +11 11 11 11 11 11 11 11 11 11 11 11 11 10 11 11 11 10 10 11 10 11 10 11 10 10 10 10 10 11 10 12 11 11 10 11 11 11 11 11 10 10 11 10 10 11 11 10 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +1 13 26 38 51 62 75 86 99 111 124 0 +2 13 27 39 49 63 76 87 100 112 121 0 +3 14 27 40 52 64 74 88 101 104 123 0 +2 15 28 41 53 65 77 89 102 113 125 0 +4 16 26 41 54 66 71 90 101 114 122 0 +5 15 29 40 55 67 78 91 98 110 126 0 +6 17 30 42 56 63 79 90 103 115 124 0 +7 18 25 43 56 68 80 87 104 113 122 0 +7 13 29 44 52 69 81 92 102 114 127 0 +8 14 29 42 57 66 77 86 97 116 119 0 +9 19 26 45 56 69 76 93 97 110 128 0 +9 14 28 46 54 68 82 91 99 112 118 0 +8 20 31 47 49 69 78 88 105 109 124 0 +1 20 32 42 52 70 76 94 106 117 0 0 +10 15 33 48 52 62 80 93 100 118 119 0 +11 18 31 39 48 67 83 94 97 114 125 0 +12 15 34 37 49 64 73 85 99 116 127 0 +2 21 25 45 55 64 83 92 103 119 0 0 +4 22 33 46 55 65 84 86 107 108 0 0 +11 16 27 45 53 70 79 95 107 111 126 0 +6 13 33 45 57 68 85 96 101 120 0 0 +12 17 25 38 58 67 76 96 107 118 123 0 +5 18 30 44 59 71 77 93 106 120 0 0 +6 20 28 43 50 72 83 86 95 121 127 0 +11 23 28 38 59 73 81 88 108 115 0 0 +10 19 32 49 60 67 75 89 101 108 0 0 +5 22 27 48 54 69 73 96 103 113 0 0 +12 23 35 47 50 62 79 97 106 122 0 0 +3 18 26 47 53 61 82 85 98 108 0 0 +9 22 31 41 58 60 72 87 106 115 116 0 +10 16 30 50 58 65 73 91 104 109 0 0 +10 24 36 41 57 61 78 94 103 111 123 127 +4 17 29 43 59 74 85 89 109 112 128 0 +3 21 34 38 60 63 77 95 105 114 128 0 +7 24 37 46 53 71 74 96 105 110 0 0 +6 19 34 47 51 70 81 91 100 123 125 0 +2 24 31 40 56 66 81 84 95 118 120 0 +1 14 30 37 48 72 78 92 107 122 128 0 +3 23 24 42 55 68 75 93 109 121 125 0 +12 22 32 43 51 71 82 88 102 119 126 0 +1 23 36 44 58 64 80 90 110 112 0 0 +7 19 35 40 59 65 82 90 111 117 0 0 +9 17 36 39 50 66 75 92 105 117 126 0 +4 21 35 39 57 70 80 98 99 115 0 0 +8 25 33 37 54 60 79 94 98 121 0 0 +8 16 34 46 61 62 83 87 102 117 120 0 +11 21 32 44 61 72 74 84 100 113 124 0 +5 20 35 36 51 63 84 89 104 116 0 0 +1 14 38 41 +2 4 18 37 +3 29 34 39 +5 19 33 44 +6 23 27 48 +7 21 24 36 +8 9 35 42 +10 13 45 46 +11 12 30 43 +15 26 31 32 +16 20 25 47 +17 22 28 40 +1 2 9 21 +3 10 12 38 +4 6 15 17 +5 20 31 46 +7 22 33 43 +8 16 23 29 +11 26 36 42 +13 14 24 48 +18 34 44 47 +19 27 30 40 +25 28 39 41 +32 35 37 39 +8 18 22 45 +1 5 11 29 +2 3 20 27 +4 12 24 25 +6 9 10 33 +7 23 31 38 +13 16 30 37 +14 26 40 47 +15 19 21 45 +17 34 36 46 +28 42 44 48 +32 41 43 48 +17 35 38 45 +1 22 25 34 +2 16 43 44 +3 6 37 42 +4 5 30 32 +7 10 14 39 +8 24 33 40 +9 23 41 47 +11 18 20 21 +12 19 35 46 +13 28 29 36 +15 16 27 38 +2 13 17 26 +24 28 31 43 +1 36 40 48 +3 9 14 15 +4 20 29 35 +5 12 27 45 +6 18 19 39 +7 8 11 37 +10 21 32 44 +22 30 31 41 +23 25 33 42 +26 30 34 45 +29 32 46 47 +1 15 28 46 +2 7 34 48 +3 17 18 41 +4 19 31 42 +5 10 37 43 +6 16 22 26 +8 12 21 39 +9 11 13 27 +14 20 36 44 +5 23 35 40 +24 30 38 47 +17 25 27 31 +3 33 35 47 +1 26 39 43 +2 11 14 22 +4 10 23 34 +6 13 32 38 +7 20 28 45 +8 15 41 44 +9 25 36 37 +12 29 40 42 +16 18 24 46 +19 37 47 48 +17 21 29 33 +1 10 19 24 +2 8 30 46 +3 13 25 40 +4 26 33 48 +5 7 41 42 +6 12 31 36 +9 18 38 43 +11 15 23 39 +14 16 32 45 +20 24 34 37 +21 22 27 35 +10 11 16 28 +6 29 44 45 +1 12 17 44 +2 15 36 47 +3 5 21 26 +4 9 40 46 +7 18 27 32 +3 8 31 48 +13 34 35 43 +14 23 28 30 +19 20 22 38 +19 25 26 29 +13 31 33 39 +6 11 35 41 +1 20 32 42 +2 12 33 41 +4 8 27 47 +5 9 16 34 +7 25 30 44 +10 17 30 48 +14 42 43 46 +12 15 22 37 +10 15 18 40 +21 23 37 46 +2 24 39 45 +5 8 28 38 +3 22 32 36 +1 7 13 47 +4 16 36 39 +6 20 40 43 +9 17 24 32 +11 33 34 38 diff --git a/lib/ldpc/peg/peg-128-80-reg4.code b/lib/ldpc/peg/peg-128-80-reg4.code new file mode 100644 index 000000000..572e6221b --- /dev/null +++ b/lib/ldpc/peg/peg-128-80-reg4.code @@ -0,0 +1,51 @@ +128 +48 +12 +1 13 26 38 51 62 75 86 99 111 124 0 +2 13 27 39 49 63 76 87 100 112 121 0 +3 14 27 40 52 64 74 88 101 104 123 0 +2 15 28 41 53 65 77 89 102 113 125 0 +4 16 26 41 54 66 71 90 101 114 122 0 +5 15 29 40 55 67 78 91 98 110 126 0 +6 17 30 42 56 63 79 90 103 115 124 0 +7 18 25 43 56 68 80 87 104 113 122 0 +7 13 29 44 52 69 81 92 102 114 127 0 +8 14 29 42 57 66 77 86 97 116 119 0 +9 19 26 45 56 69 76 93 97 110 128 0 +9 14 28 46 54 68 82 91 99 112 118 0 +8 20 31 47 49 69 78 88 105 109 124 0 +1 20 32 42 52 70 76 94 106 117 0 0 +10 15 33 48 52 62 80 93 100 118 119 0 +11 18 31 39 48 67 83 94 97 114 125 0 +12 15 34 37 49 64 73 85 99 116 127 0 +2 21 25 45 55 64 83 92 103 119 0 0 +4 22 33 46 55 65 84 86 107 108 0 0 +11 16 27 45 53 70 79 95 107 111 126 0 +6 13 33 45 57 68 85 96 101 120 0 0 +12 17 25 38 58 67 76 96 107 118 123 0 +5 18 30 44 59 71 77 93 106 120 0 0 +6 20 28 43 50 72 83 86 95 121 127 0 +11 23 28 38 59 73 81 88 108 115 0 0 +10 19 32 49 60 67 75 89 101 108 0 0 +5 22 27 48 54 69 73 96 103 113 0 0 +12 23 35 47 50 62 79 97 106 122 0 0 +3 18 26 47 53 61 82 85 98 108 0 0 +9 22 31 41 58 60 72 87 106 115 116 0 +10 16 30 50 58 65 73 91 104 109 0 0 +10 24 36 41 57 61 78 94 103 111 123 127 +4 17 29 43 59 74 85 89 109 112 128 0 +3 21 34 38 60 63 77 95 105 114 128 0 +7 24 37 46 53 71 74 96 105 110 0 0 +6 19 34 47 51 70 81 91 100 123 125 0 +2 24 31 40 56 66 81 84 95 118 120 0 +1 14 30 37 48 72 78 92 107 122 128 0 +3 23 24 42 55 68 75 93 109 121 125 0 +12 22 32 43 51 71 82 88 102 119 126 0 +1 23 36 44 58 64 80 90 110 112 0 0 +7 19 35 40 59 65 82 90 111 117 0 0 +9 17 36 39 50 66 75 92 105 117 126 0 +4 21 35 39 57 70 80 98 99 115 0 0 +8 25 33 37 54 60 79 94 98 121 0 0 +8 16 34 46 61 62 83 87 102 117 120 0 +11 21 32 44 61 72 74 84 100 113 124 0 +5 20 35 36 51 63 84 89 104 116 0 0 diff --git a/lib/ldpc/peg/peg-144-72-reg4.alist b/lib/ldpc/peg/peg-144-72-reg4.alist new file mode 100644 index 000000000..cad344714 --- /dev/null +++ b/lib/ldpc/peg/peg-144-72-reg4.alist @@ -0,0 +1,220 @@ +72 144 +9 4 +8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +1 19 38 57 74 94 110 128 0 +2 20 39 58 75 95 111 129 0 +3 21 40 59 76 95 108 130 0 +4 22 41 60 69 96 112 131 0 +2 19 42 60 77 97 113 132 0 +5 20 43 61 78 98 114 133 0 +6 22 44 62 79 99 115 127 0 +7 23 41 58 73 100 113 134 0 +8 23 45 63 80 101 114 135 0 +7 24 46 64 81 98 112 136 0 +9 25 47 64 75 102 116 130 0 +9 22 48 59 82 98 117 137 0 +10 25 49 65 80 99 118 132 0 +11 26 50 66 75 96 119 127 0 +12 27 43 67 82 103 120 136 0 +13 28 50 68 82 97 121 138 0 +8 29 47 62 83 104 121 132 0 +13 25 38 53 61 100 111 135 0 +14 22 38 63 83 95 122 133 0 +15 30 41 63 81 105 123 129 0 +1 28 51 64 80 104 119 126 0 +12 24 40 69 84 100 124 133 0 +16 23 52 65 77 106 110 139 0 +11 31 37 55 85 101 118 140 0 +13 32 48 70 77 94 122 140 0 +2 27 53 71 78 101 110 131 0 +4 29 46 71 77 88 124 130 0 +14 24 49 56 86 107 119 130 144 +14 33 47 70 87 108 115 137 0 +6 32 52 69 78 91 125 141 0 +15 26 51 61 76 86 117 140 0 +17 33 51 59 88 109 113 142 0 +6 31 40 54 88 102 111 136 0 +5 33 54 62 86 103 118 141 0 +13 24 44 72 75 103 114 142 0 +15 34 47 67 85 99 110 143 0 +18 28 49 58 89 92 122 131 0 +18 21 38 68 85 91 115 129 0 +11 33 36 58 84 106 121 128 0 +10 20 50 59 90 94 120 135 0 +5 29 42 55 89 106 117 136 0 +3 30 45 61 84 104 115 144 0 +15 20 52 57 89 102 126 142 0 +16 35 53 72 80 102 125 143 0 +9 26 39 71 74 105 125 139 0 +16 30 44 71 85 90 112 134 0 +17 25 55 69 76 105 119 134 0 +10 35 37 63 91 108 113 144 0 +17 27 44 57 87 92 123 143 0 +3 32 46 67 92 96 109 0 0 +10 36 46 60 93 107 111 133 0 +4 35 54 56 74 100 117 138 0 +6 34 39 66 87 93 118 138 0 +7 34 48 55 83 96 120 139 0 +12 35 42 68 79 105 112 141 0 +2 31 51 67 79 107 116 128 0 +1 29 40 73 90 101 125 138 0 +3 19 37 72 87 99 122 139 0 +12 26 45 65 73 92 121 137 0 +14 30 42 66 74 109 114 140 0 +1 36 48 56 81 97 116 134 0 +7 19 50 62 91 107 109 143 0 +17 23 56 70 78 93 120 129 0 +8 36 53 68 86 108 123 142 0 +4 21 39 70 89 98 123 132 0 +18 27 54 66 81 104 106 137 0 +8 31 49 57 82 93 124 127 0 +9 37 43 73 84 95 126 131 0 +18 34 45 72 88 94 116 141 0 +11 21 52 64 79 103 124 135 0 +5 32 41 65 90 97 126 128 0 +16 28 43 60 76 83 127 144 0 +1 21 57 61 +2 5 26 56 +3 42 50 58 +4 27 52 65 +6 34 41 71 +7 30 33 53 +8 10 54 62 +9 17 64 67 +11 12 45 68 +13 40 48 51 +14 24 39 70 +15 22 55 59 +16 18 25 35 +19 28 29 60 +20 31 36 43 +23 44 46 72 +32 47 49 63 +37 38 66 69 +1 5 58 62 +2 6 40 43 +3 38 65 70 +4 7 12 19 +8 9 23 63 +10 22 28 35 +11 13 18 47 +14 31 45 59 +15 26 49 66 +16 21 37 72 +17 27 41 57 +20 42 46 60 +24 33 56 67 +25 30 50 71 +29 32 34 39 +36 53 54 69 +44 48 52 55 +39 51 61 64 +24 48 58 68 +1 18 19 38 +2 45 53 65 +3 22 33 57 +4 8 20 71 +5 41 55 60 +6 15 68 72 +7 35 46 49 +9 42 59 69 +10 27 50 51 +11 17 29 36 +12 25 54 61 +13 28 37 67 +14 16 40 62 +21 31 32 56 +23 30 43 70 +18 26 44 64 +33 34 52 66 +24 41 47 54 +28 52 61 63 +1 43 49 67 +2 8 37 39 +3 12 32 40 +4 5 51 72 +6 18 31 42 +7 17 34 62 +9 19 20 48 +10 11 21 70 +13 23 59 71 +14 53 60 66 +15 36 50 56 +16 38 55 64 +4 22 30 47 +25 29 63 65 +26 27 45 46 +35 44 58 69 +8 57 59 68 +1 45 52 60 +2 11 14 35 +3 31 47 72 +5 23 25 27 +6 26 30 63 +7 55 56 70 +9 13 21 44 +10 20 61 66 +12 15 16 67 +17 19 54 72 +22 39 42 68 +24 36 38 46 +28 31 34 64 +29 49 53 58 +27 32 33 69 +37 41 43 65 +40 46 57 71 +30 38 48 62 +37 49 50 59 +51 53 63 67 +1 25 40 69 +2 3 19 68 +4 14 50 54 +5 16 61 71 +6 10 12 65 +7 13 36 58 +8 18 22 52 +9 24 26 57 +11 33 43 44 +15 34 35 70 +17 21 42 66 +20 45 47 55 +23 39 41 66 +28 51 56 62 +3 29 48 64 +32 50 60 62 +1 23 26 36 +2 18 33 51 +4 10 46 55 +5 8 32 48 +6 9 35 60 +7 29 38 42 +11 56 61 69 +12 31 41 52 +13 24 34 53 +14 21 28 47 +15 40 54 63 +16 17 39 59 +19 25 37 58 +20 49 64 65 +22 27 67 70 +30 44 45 57 +21 43 68 71 +7 14 67 72 +1 39 56 71 +2 20 38 63 +3 11 27 28 +4 26 37 68 +5 13 17 65 +6 19 22 51 +8 46 47 61 +9 18 40 70 +10 15 33 41 +12 29 59 66 +16 52 53 57 +23 45 54 58 +24 25 31 60 +30 34 55 69 +32 35 43 64 +36 44 49 62 +28 42 48 72 diff --git a/lib/ldpc/peg/peg-144-72-reg4.code b/lib/ldpc/peg/peg-144-72-reg4.code new file mode 100644 index 000000000..78747e924 --- /dev/null +++ b/lib/ldpc/peg/peg-144-72-reg4.code @@ -0,0 +1,75 @@ +144 +72 +9 +1 19 38 57 74 94 110 128 0 +2 20 39 58 75 95 111 129 0 +3 21 40 59 76 95 108 130 0 +4 22 41 60 69 96 112 131 0 +2 19 42 60 77 97 113 132 0 +5 20 43 61 78 98 114 133 0 +6 22 44 62 79 99 115 127 0 +7 23 41 58 73 100 113 134 0 +8 23 45 63 80 101 114 135 0 +7 24 46 64 81 98 112 136 0 +9 25 47 64 75 102 116 130 0 +9 22 48 59 82 98 117 137 0 +10 25 49 65 80 99 118 132 0 +11 26 50 66 75 96 119 127 0 +12 27 43 67 82 103 120 136 0 +13 28 50 68 82 97 121 138 0 +8 29 47 62 83 104 121 132 0 +13 25 38 53 61 100 111 135 0 +14 22 38 63 83 95 122 133 0 +15 30 41 63 81 105 123 129 0 +1 28 51 64 80 104 119 126 0 +12 24 40 69 84 100 124 133 0 +16 23 52 65 77 106 110 139 0 +11 31 37 55 85 101 118 140 0 +13 32 48 70 77 94 122 140 0 +2 27 53 71 78 101 110 131 0 +4 29 46 71 77 88 124 130 0 +14 24 49 56 86 107 119 130 144 +14 33 47 70 87 108 115 137 0 +6 32 52 69 78 91 125 141 0 +15 26 51 61 76 86 117 140 0 +17 33 51 59 88 109 113 142 0 +6 31 40 54 88 102 111 136 0 +5 33 54 62 86 103 118 141 0 +13 24 44 72 75 103 114 142 0 +15 34 47 67 85 99 110 143 0 +18 28 49 58 89 92 122 131 0 +18 21 38 68 85 91 115 129 0 +11 33 36 58 84 106 121 128 0 +10 20 50 59 90 94 120 135 0 +5 29 42 55 89 106 117 136 0 +3 30 45 61 84 104 115 144 0 +15 20 52 57 89 102 126 142 0 +16 35 53 72 80 102 125 143 0 +9 26 39 71 74 105 125 139 0 +16 30 44 71 85 90 112 134 0 +17 25 55 69 76 105 119 134 0 +10 35 37 63 91 108 113 144 0 +17 27 44 57 87 92 123 143 0 +3 32 46 67 92 96 109 0 0 +10 36 46 60 93 107 111 133 0 +4 35 54 56 74 100 117 138 0 +6 34 39 66 87 93 118 138 0 +7 34 48 55 83 96 120 139 0 +12 35 42 68 79 105 112 141 0 +2 31 51 67 79 107 116 128 0 +1 29 40 73 90 101 125 138 0 +3 19 37 72 87 99 122 139 0 +12 26 45 65 73 92 121 137 0 +14 30 42 66 74 109 114 140 0 +1 36 48 56 81 97 116 134 0 +7 19 50 62 91 107 109 143 0 +17 23 56 70 78 93 120 129 0 +8 36 53 68 86 108 123 142 0 +4 21 39 70 89 98 123 132 0 +18 27 54 66 81 104 106 137 0 +8 31 49 57 82 93 124 127 0 +9 37 43 73 84 95 126 131 0 +18 34 45 72 88 94 116 141 0 +11 21 52 64 79 103 124 135 0 +5 32 41 65 90 97 126 128 0 +16 28 43 60 76 83 127 144 0 diff --git a/lib/ldpc/peg/peg2alist b/lib/ldpc/peg/peg2alist new file mode 100755 index 000000000..4cc809ff9 --- /dev/null +++ b/lib/ldpc/peg/peg2alist @@ -0,0 +1,37 @@ +#!/opt/local/bin/octave -qf +# read a parity check matrix produced by the peg algorithm and +# convert to alist format so that it can be read using alist_to_pcheck +arg_list=argv(); +filename=arg_list(1); +fid=fopen(filename,"r"); +N=fscanf(fid,"%d",[1]); +M=fscanf(fid,"%d",[1]); +pcheck=zeros(M,N); +max_bits_in_check=fscanf(fid,"%d",[1]); +for i=1:M + vec=fscanf(fid,"%d",[max_bits_in_check]); + pcheck(i,vec(vec>0))=1; +endfor + +max_bits_in_check2=max(sum(pcheck')); +max_checks_per_bit=max(sum(pcheck)); +printf("%d %d\n",M,N); +printf("%d %d\n",max_bits_in_check2,max_checks_per_bit); +printf("%d ",sum(pcheck')); +printf("\n"); +printf("%d ",sum(pcheck)); +printf("\n"); +for i=1:M + vec=find(pcheck(i,:)>0); + pr=zeros(1,max_bits_in_check2); + pr(1:size(vec)(2))=vec; + printf("%d ",pr); + printf("\n"); +endfor +for i=1:N + vec=find(pcheck(:,i)>0); + pr=zeros(1,max_checks_per_bit); + pr(1:size(vec)(1))=vec; + printf("%d ",pr) + printf("\n"); +endfor diff --git a/lib/ldpc/peg/peg_128_80.pchk b/lib/ldpc/peg/peg_128_80.pchk new file mode 100644 index 000000000..c3dc1b1b9 --- /dev/null +++ b/lib/ldpc/peg/peg_128_80.pchk @@ -0,0 +1,51 @@ +128 +48 +9 +1 17 34 51 66 81 99 111 124 +2 18 35 50 67 82 100 112 125 +3 19 36 52 68 82 101 111 126 +2 20 36 51 69 83 102 113 127 +4 19 37 53 66 84 103 114 128 +5 21 38 54 70 85 92 114 0 +6 22 39 55 66 85 96 110 0 +7 23 32 56 71 86 103 115 0 +8 20 40 55 72 86 104 116 0 +9 19 41 57 73 87 105 116 0 +10 24 36 56 74 88 105 117 125 +10 17 33 47 75 89 106 118 128 +11 21 42 51 76 87 107 119 0 +1 25 40 58 74 84 107 113 0 +12 22 42 49 77 90 108 118 125 +13 26 43 59 68 89 104 120 124 +13 22 44 57 75 91 109 113 0 +12 23 37 46 78 88 107 112 0 +3 27 34 60 65 87 109 118 0 +6 27 45 61 79 89 98 112 0 +14 28 34 62 72 92 106 112 127 +8 27 42 59 71 92 110 121 126 +15 20 46 57 79 93 101 115 124 +9 29 45 62 74 94 108 121 0 +8 30 38 63 73 95 109 111 128 +16 29 47 64 69 96 109 117 126 +16 23 48 63 76 94 110 116 125 +7 25 39 52 70 97 106 117 124 +4 26 45 63 67 83 90 119 123 +15 28 39 50 76 88 103 121 123 +15 26 33 58 65 97 102 122 0 +14 31 47 52 77 81 93 116 0 +14 24 37 61 71 82 99 122 0 +4 31 40 54 80 91 106 115 122 +5 32 41 58 77 98 104 117 0 +9 18 49 65 79 85 104 119 128 +10 30 43 60 69 84 108 115 123 +1 18 43 48 73 91 98 114 127 +3 21 46 64 67 86 108 113 0 +5 24 48 55 75 93 107 120 126 +2 32 44 62 80 95 99 114 0 +16 28 41 59 80 83 100 118 0 +11 33 35 53 72 96 105 111 0 +11 25 44 60 78 90 100 120 122 +6 31 35 56 70 95 102 121 0 +12 17 50 54 68 94 105 119 0 +13 29 38 53 78 97 110 123 0 +7 30 49 61 64 81 101 120 127 diff --git a/lib/ldpc/peg/sfpeg1.code b/lib/ldpc/peg/sfpeg1.code new file mode 100644 index 000000000..c3dc1b1b9 --- /dev/null +++ b/lib/ldpc/peg/sfpeg1.code @@ -0,0 +1,51 @@ +128 +48 +9 +1 17 34 51 66 81 99 111 124 +2 18 35 50 67 82 100 112 125 +3 19 36 52 68 82 101 111 126 +2 20 36 51 69 83 102 113 127 +4 19 37 53 66 84 103 114 128 +5 21 38 54 70 85 92 114 0 +6 22 39 55 66 85 96 110 0 +7 23 32 56 71 86 103 115 0 +8 20 40 55 72 86 104 116 0 +9 19 41 57 73 87 105 116 0 +10 24 36 56 74 88 105 117 125 +10 17 33 47 75 89 106 118 128 +11 21 42 51 76 87 107 119 0 +1 25 40 58 74 84 107 113 0 +12 22 42 49 77 90 108 118 125 +13 26 43 59 68 89 104 120 124 +13 22 44 57 75 91 109 113 0 +12 23 37 46 78 88 107 112 0 +3 27 34 60 65 87 109 118 0 +6 27 45 61 79 89 98 112 0 +14 28 34 62 72 92 106 112 127 +8 27 42 59 71 92 110 121 126 +15 20 46 57 79 93 101 115 124 +9 29 45 62 74 94 108 121 0 +8 30 38 63 73 95 109 111 128 +16 29 47 64 69 96 109 117 126 +16 23 48 63 76 94 110 116 125 +7 25 39 52 70 97 106 117 124 +4 26 45 63 67 83 90 119 123 +15 28 39 50 76 88 103 121 123 +15 26 33 58 65 97 102 122 0 +14 31 47 52 77 81 93 116 0 +14 24 37 61 71 82 99 122 0 +4 31 40 54 80 91 106 115 122 +5 32 41 58 77 98 104 117 0 +9 18 49 65 79 85 104 119 128 +10 30 43 60 69 84 108 115 123 +1 18 43 48 73 91 98 114 127 +3 21 46 64 67 86 108 113 0 +5 24 48 55 75 93 107 120 126 +2 32 44 62 80 95 99 114 0 +16 28 41 59 80 83 100 118 0 +11 33 35 53 72 96 105 111 0 +11 25 44 60 78 90 100 120 122 +6 31 35 56 70 95 102 121 0 +12 17 50 54 68 94 105 119 0 +13 29 38 53 78 97 110 123 0 +7 30 49 61 64 81 101 120 127 diff --git a/lib/ldpc/peg/sfpeg1.deg b/lib/ldpc/peg/sfpeg1.deg new file mode 100644 index 000000000..7d208a695 --- /dev/null +++ b/lib/ldpc/peg/sfpeg1.deg @@ -0,0 +1,3 @@ +2 +3 4 +.8 .2 diff --git a/lib/ldpc/peg/sfpeg2.alist b/lib/ldpc/peg/sfpeg2.alist new file mode 100644 index 000000000..410bae7ee --- /dev/null +++ b/lib/ldpc/peg/sfpeg2.alist @@ -0,0 +1,180 @@ +48 128 +9 4 +9 9 8 8 8 8 8 8 8 8 8 9 8 9 8 8 8 9 8 8 9 8 8 9 8 8 8 9 8 8 9 8 8 8 9 8 9 8 8 8 8 8 8 8 9 8 8 8 +3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 +1 17 34 51 66 81 99 113 127 +2 18 35 50 67 82 100 114 128 +3 19 36 52 68 82 101 115 0 +2 20 36 51 69 83 102 116 0 +4 19 37 53 66 84 103 117 0 +5 21 38 54 70 85 92 114 0 +6 22 39 55 66 85 96 118 0 +7 23 32 56 71 86 103 119 0 +8 20 40 55 72 86 104 120 0 +9 19 41 57 73 87 105 118 0 +10 24 36 56 74 88 106 120 0 +10 17 33 47 75 89 107 121 126 +11 21 42 51 76 87 108 122 0 +1 25 40 58 74 84 109 122 126 +12 22 42 49 77 90 110 123 0 +13 26 43 59 68 89 104 113 0 +13 22 44 57 75 91 106 124 0 +12 23 37 46 78 88 109 113 128 +3 27 34 60 65 87 111 123 0 +6 27 45 61 79 89 98 114 0 +14 28 34 62 72 92 107 122 125 +8 27 42 59 71 92 112 117 0 +15 20 46 57 79 93 101 117 0 +9 29 45 62 74 94 108 119 128 +8 30 38 63 73 95 110 124 0 +16 29 47 64 69 96 110 125 0 +16 23 48 63 76 94 111 120 0 +7 25 39 52 70 97 108 116 127 +4 26 45 63 67 83 90 121 0 +15 28 39 50 76 88 103 115 0 +15 26 33 58 65 97 102 125 128 +14 31 47 52 77 81 93 120 0 +14 24 37 61 71 82 99 116 0 +4 31 40 54 80 91 107 119 0 +5 32 41 58 77 98 111 124 127 +9 18 49 65 79 85 104 124 0 +10 30 43 60 69 84 112 119 127 +1 18 43 48 73 91 98 121 0 +3 21 46 64 67 86 112 118 0 +5 24 48 55 75 93 105 122 0 +2 32 44 62 80 95 99 118 0 +16 28 41 59 80 83 100 123 0 +11 33 35 53 72 96 109 115 0 +11 25 44 60 78 90 100 117 0 +6 31 35 56 70 95 102 123 126 +12 17 50 54 68 94 106 125 0 +13 29 38 53 78 97 105 121 0 +7 30 49 61 64 81 101 126 0 +1 14 38 0 +2 4 41 0 +3 19 39 0 +5 29 34 0 +6 35 40 0 +7 20 45 0 +8 28 48 0 +9 22 25 0 +10 24 36 0 +11 12 37 0 +13 43 44 0 +15 18 46 0 +16 17 47 0 +21 32 33 0 +23 30 31 0 +26 27 42 0 +1 12 46 0 +2 36 38 0 +3 5 10 0 +4 9 23 0 +6 13 39 0 +7 15 17 0 +8 18 27 0 +11 33 40 0 +14 28 44 0 +16 29 31 0 +19 20 22 0 +21 30 42 0 +24 26 47 0 +25 37 48 0 +32 34 45 0 +8 35 41 0 +12 31 43 0 +1 19 21 0 +2 43 45 0 +3 4 11 0 +5 18 33 0 +6 25 47 0 +7 28 30 0 +9 14 34 0 +10 35 42 0 +13 15 22 0 +16 37 38 0 +17 41 44 0 +20 24 29 0 +18 23 39 0 +12 26 32 0 +27 38 40 0 +15 36 48 0 +2 30 46 0 +1 4 13 0 +3 28 32 0 +5 43 47 0 +6 34 46 0 +7 9 40 0 +8 11 45 0 +10 17 23 0 +14 31 35 0 +16 22 42 0 +19 37 44 0 +20 33 48 0 +21 24 41 0 +25 27 29 0 +26 39 48 0 +19 31 36 0 +1 5 7 0 +2 29 39 0 +3 16 46 0 +4 26 37 0 +6 28 45 0 +8 22 33 0 +9 21 43 0 +10 25 38 0 +11 14 24 0 +12 17 40 0 +13 27 30 0 +15 32 35 0 +18 44 47 0 +20 23 36 0 +34 41 42 0 +1 32 48 0 +2 3 33 0 +4 29 42 0 +5 14 37 0 +6 7 36 0 +8 9 39 0 +10 13 19 0 +11 18 30 0 +12 16 20 0 +15 29 44 0 +17 34 38 0 +6 21 22 0 +23 32 40 0 +24 27 46 0 +25 41 45 0 +7 26 43 0 +28 31 47 0 +20 35 38 0 +1 33 41 0 +2 42 44 0 +3 23 48 0 +4 31 45 0 +5 8 30 0 +9 16 36 0 +10 40 47 0 +11 17 46 0 +12 21 34 0 +13 24 28 0 +14 18 43 0 +15 25 26 0 +19 27 35 0 +22 37 39 0 +1 16 18 0 +2 6 20 0 +3 30 43 0 +4 28 33 0 +5 22 23 44 +7 10 39 41 +8 24 34 37 +9 11 27 32 +12 29 38 47 +13 14 21 40 +15 19 42 45 +17 25 35 36 +21 26 31 46 +12 14 45 48 +1 28 35 37 +2 18 24 31 diff --git a/lib/ldpc/peg/sfpeg2.code b/lib/ldpc/peg/sfpeg2.code new file mode 100644 index 000000000..0082bd378 --- /dev/null +++ b/lib/ldpc/peg/sfpeg2.code @@ -0,0 +1,51 @@ +128 +48 +9 +1 17 34 51 66 81 99 113 127 +2 18 35 50 67 82 100 114 128 +3 19 36 52 68 82 101 115 0 +2 20 36 51 69 83 102 116 0 +4 19 37 53 66 84 103 117 0 +5 21 38 54 70 85 92 114 0 +6 22 39 55 66 85 96 118 0 +7 23 32 56 71 86 103 119 0 +8 20 40 55 72 86 104 120 0 +9 19 41 57 73 87 105 118 0 +10 24 36 56 74 88 106 120 0 +10 17 33 47 75 89 107 121 126 +11 21 42 51 76 87 108 122 0 +1 25 40 58 74 84 109 122 126 +12 22 42 49 77 90 110 123 0 +13 26 43 59 68 89 104 113 0 +13 22 44 57 75 91 106 124 0 +12 23 37 46 78 88 109 113 128 +3 27 34 60 65 87 111 123 0 +6 27 45 61 79 89 98 114 0 +14 28 34 62 72 92 107 122 125 +8 27 42 59 71 92 112 117 0 +15 20 46 57 79 93 101 117 0 +9 29 45 62 74 94 108 119 128 +8 30 38 63 73 95 110 124 0 +16 29 47 64 69 96 110 125 0 +16 23 48 63 76 94 111 120 0 +7 25 39 52 70 97 108 116 127 +4 26 45 63 67 83 90 121 0 +15 28 39 50 76 88 103 115 0 +15 26 33 58 65 97 102 125 128 +14 31 47 52 77 81 93 120 0 +14 24 37 61 71 82 99 116 0 +4 31 40 54 80 91 107 119 0 +5 32 41 58 77 98 111 124 127 +9 18 49 65 79 85 104 124 0 +10 30 43 60 69 84 112 119 127 +1 18 43 48 73 91 98 121 0 +3 21 46 64 67 86 112 118 0 +5 24 48 55 75 93 105 122 0 +2 32 44 62 80 95 99 118 0 +16 28 41 59 80 83 100 123 0 +11 33 35 53 72 96 109 115 0 +11 25 44 60 78 90 100 117 0 +6 31 35 56 70 95 102 123 126 +12 17 50 54 68 94 106 125 0 +13 29 38 53 78 97 105 121 0 +7 30 49 61 64 81 101 126 0 diff --git a/lib/ldpc/peg/sfpeg2.deg b/lib/ldpc/peg/sfpeg2.deg new file mode 100644 index 000000000..fb023b777 --- /dev/null +++ b/lib/ldpc/peg/sfpeg2.deg @@ -0,0 +1,3 @@ +2 +3 4 +.9 .1 diff --git a/lib/ldpc/peg/sfpeg3.alist b/lib/ldpc/peg/sfpeg3.alist new file mode 100644 index 000000000..e2d9e15f9 --- /dev/null +++ b/lib/ldpc/peg/sfpeg3.alist @@ -0,0 +1,180 @@ +48 128 +8 3 +8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +1 17 34 51 66 81 99 113 +2 18 35 50 67 82 100 114 +3 19 36 52 68 82 101 115 +2 20 36 51 69 83 102 116 +4 19 37 53 66 84 103 117 +5 21 38 54 70 85 92 114 +6 22 39 55 66 85 96 118 +7 23 32 56 71 86 103 119 +8 20 40 55 72 86 104 120 +9 19 41 57 73 87 105 121 +10 24 36 56 74 88 106 122 +10 17 33 47 75 89 107 119 +11 21 42 51 76 87 108 123 +1 25 40 58 74 84 109 124 +12 22 42 49 77 90 110 122 +13 26 43 59 68 89 104 113 +13 22 44 57 75 91 106 125 +12 23 37 46 78 88 109 113 +3 27 34 60 65 87 111 126 +6 27 45 61 79 89 98 114 +14 28 34 62 72 92 107 125 +8 27 42 59 71 92 112 117 +15 20 46 57 79 93 101 117 +9 29 45 62 74 94 108 127 +8 30 38 63 73 95 110 125 +16 29 47 64 69 96 110 128 +16 23 48 63 76 94 111 121 +7 25 39 52 70 97 108 116 +4 26 45 63 67 83 90 126 +15 28 39 50 76 88 103 115 +15 26 33 58 65 97 102 127 +14 31 47 52 77 81 93 121 +14 24 37 61 71 82 99 116 +4 31 40 54 80 91 107 122 +5 32 41 58 77 98 111 120 +9 18 49 65 79 85 104 123 +10 30 43 60 69 84 112 123 +1 18 43 48 73 91 98 119 +3 21 46 64 67 86 112 118 +5 24 48 55 75 93 105 128 +2 32 44 62 80 95 99 124 +16 28 41 59 80 83 100 118 +11 33 35 53 72 96 109 115 +11 25 44 60 78 90 100 128 +6 31 35 56 70 95 102 126 +12 17 50 54 68 94 106 120 +13 29 38 53 78 97 105 124 +7 30 49 61 64 81 101 127 +1 14 38 +2 4 41 +3 19 39 +5 29 34 +6 35 40 +7 20 45 +8 28 48 +9 22 25 +10 24 36 +11 12 37 +13 43 44 +15 18 46 +16 17 47 +21 32 33 +23 30 31 +26 27 42 +1 12 46 +2 36 38 +3 5 10 +4 9 23 +6 13 39 +7 15 17 +8 18 27 +11 33 40 +14 28 44 +16 29 31 +19 20 22 +21 30 42 +24 26 47 +25 37 48 +32 34 45 +8 35 41 +12 31 43 +1 19 21 +2 43 45 +3 4 11 +5 18 33 +6 25 47 +7 28 30 +9 14 34 +10 35 42 +13 15 22 +16 37 38 +17 41 44 +20 24 29 +18 23 39 +12 26 32 +27 38 40 +15 36 48 +2 30 46 +1 4 13 +3 28 32 +5 43 47 +6 34 46 +7 9 40 +8 11 45 +10 17 23 +14 31 35 +16 22 42 +19 37 44 +20 33 48 +21 24 41 +25 27 29 +26 39 48 +19 31 36 +1 5 7 +2 29 39 +3 16 46 +4 26 37 +6 28 45 +8 22 33 +9 21 43 +10 25 38 +11 14 24 +12 17 40 +13 27 30 +15 32 35 +18 44 47 +20 23 36 +34 41 42 +1 32 48 +2 3 33 +4 29 42 +5 14 37 +6 7 36 +8 9 39 +10 13 19 +11 18 30 +12 16 20 +15 29 44 +17 34 38 +6 21 22 +23 32 40 +24 27 46 +25 41 45 +7 26 43 +28 31 47 +20 35 38 +1 33 41 +2 42 44 +3 23 48 +4 31 45 +5 8 30 +9 16 36 +10 40 47 +11 17 46 +12 21 34 +13 24 28 +14 18 43 +15 25 26 +19 27 35 +22 37 39 +1 16 18 +2 6 20 +3 30 43 +4 28 33 +5 22 23 +7 39 42 +8 12 38 +9 35 46 +10 27 32 +11 15 34 +13 36 37 +14 41 47 +17 21 25 +19 29 45 +24 31 48 +26 40 44 diff --git a/lib/ldpc/peg/sfpeg3.code b/lib/ldpc/peg/sfpeg3.code new file mode 100644 index 000000000..10064e072 --- /dev/null +++ b/lib/ldpc/peg/sfpeg3.code @@ -0,0 +1,51 @@ +128 +48 +8 +1 17 34 51 66 81 99 113 +2 18 35 50 67 82 100 114 +3 19 36 52 68 82 101 115 +2 20 36 51 69 83 102 116 +4 19 37 53 66 84 103 117 +5 21 38 54 70 85 92 114 +6 22 39 55 66 85 96 118 +7 23 32 56 71 86 103 119 +8 20 40 55 72 86 104 120 +9 19 41 57 73 87 105 121 +10 24 36 56 74 88 106 122 +10 17 33 47 75 89 107 119 +11 21 42 51 76 87 108 123 +1 25 40 58 74 84 109 124 +12 22 42 49 77 90 110 122 +13 26 43 59 68 89 104 113 +13 22 44 57 75 91 106 125 +12 23 37 46 78 88 109 113 +3 27 34 60 65 87 111 126 +6 27 45 61 79 89 98 114 +14 28 34 62 72 92 107 125 +8 27 42 59 71 92 112 117 +15 20 46 57 79 93 101 117 +9 29 45 62 74 94 108 127 +8 30 38 63 73 95 110 125 +16 29 47 64 69 96 110 128 +16 23 48 63 76 94 111 121 +7 25 39 52 70 97 108 116 +4 26 45 63 67 83 90 126 +15 28 39 50 76 88 103 115 +15 26 33 58 65 97 102 127 +14 31 47 52 77 81 93 121 +14 24 37 61 71 82 99 116 +4 31 40 54 80 91 107 122 +5 32 41 58 77 98 111 120 +9 18 49 65 79 85 104 123 +10 30 43 60 69 84 112 123 +1 18 43 48 73 91 98 119 +3 21 46 64 67 86 112 118 +5 24 48 55 75 93 105 128 +2 32 44 62 80 95 99 124 +16 28 41 59 80 83 100 118 +11 33 35 53 72 96 109 115 +11 25 44 60 78 90 100 128 +6 31 35 56 70 95 102 126 +12 17 50 54 68 94 106 120 +13 29 38 53 78 97 105 124 +7 30 49 61 64 81 101 127 diff --git a/lib/ldpc/peg/sfpeg3.deg b/lib/ldpc/peg/sfpeg3.deg new file mode 100644 index 000000000..0fb5a574c --- /dev/null +++ b/lib/ldpc/peg/sfpeg3.deg @@ -0,0 +1,3 @@ +1 +3 +1.0