* Fix running Prolog inside the build environment
[chr.git] / Benchmarks / fib.chr
blobc6078891841dbb1fb7028edae83ccf1f82fd2175
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%
3 %% 991202 Slim Abdennadher, LMU
4 %%
5 %% ported to hProlog by Tom Schrijvers
7 :- module(fib,[main/0,main/1]).
9 :- use_module(library(chr)).
11 :- constraints fib/2.
13 %% fib(N,M) is true if  M is the Nth Fibonacci number.
15 %% Top-down Evaluation with Tabulation
17 fib(N,M1), fib(N,M2) <=> M1 = M2, fib(N,M1).
19 fib(0,M) ==> M = 1.
21 fib(1,M) ==> M = 1.
23 fib(N,M) ==> N > 1 | N1 is N-1, fib(N1,M1), N2 is N-2, fib(N2,M2), M is M1 + M2.
25 main :-
26         main(22).
28 main(N):-
29         cputime(X),
30         fib(N,_),
31         cputime( Now),
32         Time is Now-X,
33         write(bench(fib ,N,Time, 0, hprolog)),write('.'), nl.
34