/* Fibonacci closed form. This crashes Picat and is reported to NFZ: - floor(exp(floor(3) / exp(-6.591089771404439))) - floor(exp(exp(11.937601339042931 + 1))) - floor(exp(exp(8))) So we use ceiling/1 instead. * I stopped it after 2hours: gen = 39879 (time: 6741.483s) results_best = [[38.909123964266598,(sqrt(exp(X) / X) - 3) / (11.937601339042931 / (11.937601339042931 + sqrt(X)))]] * stop_criteria=generations num_gens=1800 gen = 1764 (time: 100.014s) results_best = [[474.308232046410126,floor(X - 4 + sqrt(exp(X))) / sqrt(10)]] gen = 1283 (time: 67.621s) results_best = [[245.063568941527564,sqrt(exp(X) - X) / sqrt(sqrt(exp(sqrt(floor(X))) + (X + 13.607508686188382)))]] Cf fib_50_2.conf */ import util. data(eureqa_test,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[A],B] : A in 1..20, fib(A)=B], % Ops = [+,/,-,exp,sqrt,ceiling], Ops = [+,/,-,exp,sqrt,floor,pow_mod2], Constants = 0..10 ++ [frand(-20,20) : _ in 1..10], Vars = ['X'], Unknown = [1], MaxSize = 51, Params = new_map([ approx=1, stop_criteria=generations, num_gens=1800 ]). table fib(0) = 0. fib(1) = 1. fib(N) = fib(N-1) + fib(N-2).