Implement set-theoretic operation on 2WSATA (union, intersection,
[tatoo.git] / include / utils.ml
1 IFNDEF UTILS__ML__
2 THEN
3 DEFINE UTILS__ML__
4
5 IFDEF WORDSIZE64
6 THEN
7 INCLUDE "utils64.ml"
8 ELSE
9 INCLUDE "utils32.ml"
10 END
11
12
13 DEFINE HASHINT2 (x,y) = (((x)+HPARAM*(y)) land 0x3fffffff)
14 DEFINE HASHINT3 (x,y,z) = (((x)  + (y) * HPARAM + (z) * HPARAM2) land 0x3fffffff)
15 DEFINE HASHINT4 (x,y,z,t) =  (((x)  + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3) land 0x3fffffff)
16 DEFINE HASHINT5 (x,y,z,t,u) =  (((x)  + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3 + (u)*HPARAM4) land 0x3fffffff)
17
18 (* Magic Constants used for hashing *)
19 DEFINE PRIME1 = 7
20 DEFINE PRIME2 = 19
21 DEFINE PRIME3 = 83
22 DEFINE PRIME4 = 223
23 DEFINE PRIME5 = 491
24 DEFINE PRIME6 = 733
25 DEFINE PRIME7 = 1009
26 DEFINE PRIME8 = 4093
27 DEFINE PRIME9 = 65599
28
29 DEFINE SMALL_H_SIZE  = PRIME2
30 DEFINE MED_H_SIZE    = PRIME5
31 DEFINE BIG_H_SIZE    = PRIME8
32
33 DEFINE SMALL_A_SIZE  = 128
34 DEFINE MED_A_SIZE = 2048
35 DEFINE BIG_A_SIZE = 8192
36
37 END (* IFNDEF UTILS__ML__ *)