X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=utils.ml;h=cfa6c8e859caec5368a65c27ec09ccd147e47e0a;hb=f0557f21878be17ddc75b1bc8f4f86da68c8e604;hp=e6cbff0cdec733765798f70d070822e7192ccbaf;hpb=978f182e9ce00820c1ce8c721f61ab57afabd160;p=SXSI%2Fxpathcomp.git diff --git a/utils.ml b/utils.ml index e6cbff0..cfa6c8e 100644 --- a/utils.ml +++ b/utils.ml @@ -9,16 +9,41 @@ THEN DEFINE HALFWORDSIZE = 32 DEFINE INTSIZE = 63 DEFINE HALFINTSIZE = 31 + DEFINE HALF_MAX_INT = 2305843009213693951 + DEFINE HPARAM = 65599 + DEFINE HPARAM2 = 4303228801 + DEFINE HPARAM3 = 282287506116799 + ELSE DEFINE WORDSIZE = 32 DEFINE HALFWORDSIZE = 16 DEFINE INTSIZE = 31 DEFINE HALFINTSIZE = 15 + DEFINE HALF_MAX_INT = 536870911 + DEFINE HPARAM = 65599 + DEFINE HPARAM2 = 8261505 + DEFINE HPARAM3 = 780587199 + END -DEFINE ROTATEHALF (x) = (((x) lsl HALFINTSIZE) lor ((x) lsr HALFINTSIZE)) -DEFINE HASHINT2 (x,y) = ((((x) lsl 16)+((x) lsl 8)-(x))+(y)) -DEFINE HASHINT3 (x,y,z) = (((((x) lsl 16)+((x) lsl 8)-(x))+(y))*65599+(z)) + +DEFINE HASHINT2 (x,y) = ((x)+HPARAM*(y)) +DEFINE HASHINT3 (x,y,z) = ((x) + (y) * HPARAM + (z) * HPARAM2) +DEFINE HASHINT4 (x,y,z,t) = ((x) + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3) + +DEFINE PRIME1 = 7 +DEFINE PRIME2 = 19 +DEFINE PRIME3 = 83 +DEFINE PRIME4 = 223 +DEFINE PRIME5 = 491 +DEFINE PRIME6 = 733 +DEFINE PRIME7 = 1009 +DEFINE PRIME8 = 4093 +DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *) + +DEFINE SMALL_H_SIZE = PRIME2 +DEFINE MED_H_SIZE = PRIME5 +DEFINE BIG_H_SIZE = PRIME8 END (* IFNDEF UTILS__ML__ *)