/* Factorial / Gamma function maxCount = 5 code = factorial((N + (N + 1))) = [[[1],6],[[2],120],[[3],5040],[[4],362880],[[5],39916800],[[6],622702080 Cf http://hakank.org/jgap/gamma_test.conf Note: This blows up. It's very easy to get something like this f = !(!(N)) But using factorial_restricted works: [program = N - N + factorial_restricted(N + (1 + N)),res = 51090942171709440000,count = 8] [program = factorial_restricted(N + N + 1),res = 51090942171709440000,count = 7] [program = factorial_restricted(1 + (N + N)),res = 51090942171709440000,count = 6] [program = factorial_restricted(N + (N + 1)),res = 51090942171709440000,count = 5] [program = factorial_restricted(N + (1 + N)) + N * (1 - 1) * 1,res = 51090942171709440000,count = 3] [program = factorial_restricted(2 * N + factorial_restricted(1)),res = 51090942171709440000,count = 3] [program = factorial_restricted(N + (1 + N)) * 1,res = 51090942171709440000,count = 2] [program = factorial_restricted(N * 2 + 1),res = 51090942171709440000,count = 1] resultMap = [51090942171709440000 = 8] */ data(factorial_test,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[N],factorial(2*N+1)] : N in 1..9], println(data=Data), Unknown = [10], Vars = ['N'], % Ops = [+,-,*,!], Ops = [+,-,*,factorial_restricted], Constants = 1..2, MaxSize = 6, Params = new_map([debug=false]).