DEFINE HALFWORDSIZE = 32
DEFINE INTSIZE = 63
DEFINE HALFINTSIZE = 31
+ DEFINE HALF_MAX_INT = 2305843009213693951
ELSE
DEFINE WORDSIZE = 32
DEFINE HALFWORDSIZE = 16
DEFINE INTSIZE = 31
DEFINE HALFINTSIZE = 15
+ DEFINE HALF_MAX_INT = 536870911
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))
+(* 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 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__ *)