Small fixes and optimization
[SXSI/libbp.git] / bp-core.c
index 67cc780..700e3e5 100644 (file)
--- a/bp-core.c
+++ b/bp-core.c
 #define MBid(i) ((i)>>logMB)
 #define MBfirst(i) ((i) & (~(MB-1)))
 #define MBlast(i) ((i) | (MB-1))
-#define max(a,b) \
-  ({ __typeof__ (a) _a = (a); \
-  __typeof__ (b) _b = (b); \
-  _a > _b ? _a : _b; })
 
+static int min(int a, int b)
+{
+       return (a <= b) ? a : b;
+}
 
-#define min(a,b) \
-  ({ __typeof__ (a) _a = (a); \
-  __typeof__ (b) _b = (b); \
-   _a <= _b ? _a : _b; })
-
+static int max(int a, int b)
+{
+       return (a >= b) ? a : b;
+}
 
 pb getpat_preorder(pb *b)
 {
@@ -109,7 +108,7 @@ int search_SB_r(bp *b, int i, int rel)
   pb *p,x,w;
 
   n = b->n;
-  il = min((SBid(i) + 1) << logSB,n);
+  il = min((SBid(i) + 1) << logSB, n);
   p = &b->B[i>>logD];
   while (i<il) {
     x = *p++;
@@ -126,7 +125,7 @@ int search_SB_r(bp *b, int i, int rel)
         }
       }
       r = min(j,ETW);
-      rel -= 2*popcount(w)-r;
+      rel -= (popcount(w) << 1)-r;
       x <<= r;
       i += r;
       j -= r;