IFNDEF UTILS_ML__ THEN DEFINE UTILS__ML__ IFDEF WORDSIZE64 THEN DEFINE WORDSIZE = 64 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 (* 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__ *)