[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