[pypy-dev] reg. GCLS recursive test.

Amaury Forgeot d'Arc amauryfa at gmail.com
Tue Jan 29 19:57:43 CET 2008


Hello,

Amund Tveit wrote:
> Hi, I wrote a blog entry yesterday about using rpython for the great
> computer language shootout recursive program, and got a RunTime error
> when I input on the commandline 11 (1 to 10 goes fine). Just did an
> svn update of pypy to version 51115 and still get the error, here is
> the program:
>
> blog entry:
> http://amundblog.blogspot.com/2008/01/rpython-gclb-benchmark-recursive.html
>
> source file:
> recursive.py
> # The Computer Language Shootout
> # http://shootout.alioth.debian.org/
> # based on bearophile's psyco program
> # slightly modified by Isaac Gouy
>
> def Ack(x, y):
>     if x == 0: return y+1
>     if y == 0: return Ack(x-1, 1)
>     return Ack(x-1, Ack(x, y-1))
...
>
> from sys import argv, setrecursionlimit
> setrecursionlimit(20000)
>
> def main(argv):
>     n = int(argv[1]) - 1
>     print "Ack(3,%d):" % (n+1), Ack(3, n+1)
>     print "Fib(" + str(28.0+n) + "," + str(FibFP(28.0+n))
>     print "Tak(%d,%d,%d): %d" % (3*n, 2*n, n, Tak(3*n, 2*n, n))
>     print "Fib(3):", Fib(3)
>     print "Tak(3.0,2.0,1.0):", TakFP(3.0, 2.0, 1.0)
>     return 0
>
> from pypy.translator.interactive import Translation
> t = Translation(main, standalone=True, gc='ref')
> t.source(backend='c')
> path = t.compile()
> print path

This has nothing to do with pypy, and I get the same error with a
normal python interpreter: the Ackermann function is gigantically
recursive, and 20000 is probably not enough for Ack(3, 11).

-- 
Amaury Forgeot d'Arc



More information about the Pypy-dev mailing list