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