CONSTANTS
e= 2.71828182845904523536 % theoretical value of Euler's number
em=2.71828182845904532907 % Matlab value for Euler's number
ep=2.718281828459045773159928 % e170, value of Euler's number computed in Prolog
maxint=32767 % 2^15 - 1 (signed integer), Prolog
maxfact=170 % factorial(171)>1e308, maxreal=1e308, Prolog
PREDICATES
euler(real,real)
euler(real,real,real,real)
e170(real) % compute Euler's number in 170 iterations (with minimal number of arithmetic operations)
e170(integer,integer,real,real,real)
e170(integer,real) % compute Euler's number in at most 170 iterations (with minimal number of arithmetic operations)
%e170(integer,integer,real,real,real)
fact(integer,real)
fact(integer,real,real)
CLAUSES
euler(N,R):-euler(N,N,1,R).
euler(_,0,Ri,Ri). % (i,i,i,o)
euler(N,Ci,Ri,R):-Ci>0,Ria=Ri*(1+1/N),Cia=Ci-1,euler(N,Cia, Ria, R).
e170(R):-e170(0,170,1,1,R).% (Ci,Cf,RFi,Ri,R)
e170(Cf,Cf,_,Ri,Ri). % (i,i,i,o)
e170(Ci,Cf,RFi,Ri,R):-
Ci0,Na=N-1,Ria=Ri*N,fact(Na,Ria,R).