[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