X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;ds=sidebyside;f=utils.ml;h=74bf778e356e50cbfc70ab66e2a5b740db7aad7d;hb=2676d5a3bbb1e6f6a5af66477edfe3b4c849f4e7;hp=ce08290178eeb4c8185a0d3fa57c22a8f5616ef4;hpb=b8aa8e7f1036cf00d0fadc75ccbe0264bae6c1b2;p=SXSI%2Fxpathcomp.git diff --git a/utils.ml b/utils.ml index ce08290..74bf778 100644 --- a/utils.ml +++ b/utils.ml @@ -10,19 +10,26 @@ THEN 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 -(* x+65599*y, as in Hashtbl.hash *) -DEFINE HASHINT2 (x,y) = ((x) + ( ((y) lsl 16) + ((y) lsl 8) - (y))) -DEFINE HASHINT3 (x,y,z) = (HASHINT2(HASHINT2(x,y),z)) -DEFINE HASHINT4 (x,y,z,t) = (HASHINT2((HASHINT2(HASHINT2(x,y),z)),t)) +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