3:-module(phil_test,
4 [close_to/2,close_to/3,relatively_close_to/2,relatively_close_to/3,run/1,
5 perm/2]). 6
7:- meta_predicate run(:). 8
9perm(A,B):-
10 permutation(A,B),!.
11
12run(M:H):-
13 copy_term(H,NH),
14 numbervars(NH),
16 format("~p.~n",[NH]),
17 (H=(G,R)),
18 time(call(M:G)),!,
19 format("\t~p.~n~n",[G]),
20 call(R).
21
22epsilon(0.09).
23
24close_to(V,T):-
25 epsilon(E),
26 TLow is T-E,
27 THigh is T+E,
28 TLow=<V,
29 V=<THigh.
30
31close_to(V,T,E):-
32 TLow is T-E,
33 THigh is T+E,
34 TLow=<V,
35 V=<THigh.
36
37relative_epsilon(0.1).
38
39relatively_close_to(V,T):-
40 relative_epsilon(E),
41 TLow is T*(1-E),
42 THigh is T*(1+E),
43 TLow=<V,
44 V=<THigh.
45
46relatively_close_to(V,T,E):-
47 TLow is T*(1-E),
48 THigh is T*(1+E),
49 TLow=<V,
50 V=<THigh