X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=utils.ml;h=cfa6c8e859caec5368a65c27ec09ccd147e47e0a;hb=d550133ad7afdf65c5e284c2bcf67a5bdde6faa7;hp=ce08290178eeb4c8185a0d3fa57c22a8f5616ef4;hpb=09870a49122b3d7048422818dbb0a038513b4d14;p=SXSI%2Fxpathcomp.git diff --git a/utils.ml b/utils.ml index ce08290..cfa6c8e 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 @@ -39,6 +46,4 @@ DEFINE MED_H_SIZE = PRIME5 DEFINE BIG_H_SIZE = PRIME8 - - END (* IFNDEF UTILS__ML__ *)