[MN-dev] [mndiff]: r146 - in trunk/noe: galois.h galois_internal.h

michael subversion at mplayerhq.hu
Sat Apr 11 20:40:25 CEST 2009


Author: michael
Date: Sat Apr 11 20:40:24 2009
New Revision: 146

Log:
GF(2) support

Modified:
   trunk/noe/galois.h
   trunk/noe/galois_internal.h

Modified: trunk/noe/galois.h
==============================================================================
--- trunk/noe/galois.h	Fri Apr 10 22:12:35 2009	(r145)
+++ trunk/noe/galois.h	Sat Apr 11 20:40:24 2009	(r146)
@@ -20,6 +20,7 @@
 
 typedef unsigned int GFF4Element;
 
+void noe_init_2();
 void noe_init_100();
 void noe_init_101();
 void noe_init_10001();

Modified: trunk/noe/galois_internal.h
==============================================================================
--- trunk/noe/galois_internal.h	Fri Apr 10 22:12:35 2009	(r145)
+++ trunk/noe/galois_internal.h	Sat Apr 11 20:40:24 2009	(r146)
@@ -36,6 +36,12 @@
 #define M 0
 #define EXT(name) noe_ ## name ## _101
 #define ADD_OP +=
+#elif SIZE == 2
+#define PRIMITIVE_ELEMENT 1
+#define SHIFT 8
+#define M 0x100
+#define EXT(name) noe_ ## name ## _2
+#define ADD_OP ^=
 #else
 #error wrong SIZE
 #endif
@@ -73,7 +79,9 @@ static inline GFF4Element reduce(GFF4Ele
 }
 
 static inline GFF4Element prod(GFF4Element a, GFF4Element b){
-#if M!=0 || SIZE < 0x500
+#if SIZE == 2
+    return a&b;
+#elif M!=0 || SIZE < 0x500
     return EXT(exp)[EXT(log)[a] + EXT(log)[b]];
 #else
     if(a==MINUS1)  return -b + ((((int)-b)>>31)&SIZE);
@@ -101,7 +109,11 @@ static inline GFF4Element diff(GFF4Eleme
 static inline GFF4Element inv(GFF4Element a){
     assert(a!=0);
 
+#if SIZE == 2
+    return a;
+#else
     return (EXT(exp)+MINUS1)[- (signed)EXT(log)[a]];
+#endif
 }
 
 #define SET_POLY0(dst, coeff0) (dst)[0]=0; (dst)[1]=coeff0;



More information about the Mndiff-dev mailing list