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