[MN-dev] [mndiff]: r141 - trunk/noe/test_ldpc.c

michael subversion at mplayerhq.hu
Fri Apr 10 20:32:09 CEST 2009


Author: michael
Date: Fri Apr 10 20:32:08 2009
New Revision: 141

Log:
Also test unreliable low weight LDPCs.

Modified:
   trunk/noe/test_ldpc.c

Modified: trunk/noe/test_ldpc.c
==============================================================================
--- trunk/noe/test_ldpc.c	Fri Apr 10 20:17:54 2009	(r140)
+++ trunk/noe/test_ldpc.c	Fri Apr 10 20:32:08 2009	(r141)
@@ -30,7 +30,7 @@
 #include <assert.h>
 
 int main(){
-    int data_len, parity_len, i, x;
+    int data_len, parity_len, i, x, reliable;
     KISSState kiss;
     int failsum=0;
 
@@ -39,6 +39,7 @@ int main(){
 
     for(data_len=100; data_len < 2000; data_len<<=1){
         for(parity_len=10; parity_len < data_len; parity_len<<=1){
+          for(reliable=0; reliable<=1; reliable++){
             const int code_len= data_len + parity_len;
             int seed, erasure_count, try;
             struct LDPCContext *enc= NULL;
@@ -49,15 +50,15 @@ int main(){
                 parity_pos[i]= data_len + i;
 
             for(seed=0; 1; seed++){
-                enc= EXT(initLDPC)(data_len, parity_len, seed, 0);
+                enc= EXT(initLDPC)(data_len, parity_len, seed, reliable ? 0 : 3);
                 if(EXT(init_matrixLDPC)(enc, parity_len, parity_pos) >= 0)
                     break;
                 EXT(freeLDPC)(enc);
             }
 
-            dec= EXT(initLDPC)(data_len, parity_len, seed, 0);
+            dec= EXT(initLDPC)(data_len, parity_len, seed, reliable ? 0 : 3);
 
-            for(erasure_count= parity_len; erasure_count > parity_len-3; erasure_count--){
+            for(erasure_count= reliable ? parity_len-1 : parity_len*3/4; ; erasure_count--){
                 int fail=0;
                 for(try=0; try<10; try++){
                     uint8_t code[code_len], code_bak[code_len];
@@ -90,13 +91,14 @@ int main(){
                             fprintf(stderr, "FATAL error %X!= %X at %d\n", code[i], code_bak[i], i);
                     }
                 }
-                printf("data:%5d parity:%5d extra:%d fail:%d seed:%d\n", data_len, parity_len, parity_len-erasure_count, fail, seed);
+                printf("data:%5d parity:%5d extra:%3d fail:%d seed:%d\n", data_len, parity_len, parity_len-erasure_count, fail, seed);
                 failsum+= fail;
                 if(!fail)
                     break;
             }
             EXT(freeLDPC)(dec);
             EXT(freeLDPC)(enc);
+          }
         }
     }
     printf("failsum:%d\n", failsum);



More information about the Mndiff-dev mailing list