[pypy-dev] reg. GCLS recursive test.

Amund Tveit atveit at gmail.com
Tue Jan 29 19:31:16 CET 2008


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))

def Fib(n):
    if n < 2: return 1
    return Fib(n-2) + Fib(n-1)

def FibFP(n):
    if n < 2.0: return 1.0
    return FibFP(n-2.0) + FibFP(n-1.0)

def Tak(x, y, z):
    if y < x: return Tak( Tak(x-1,y,z), Tak(y-1,z,x), Tak(z-1,x,y) )
    return z

def TakFP(x, y, z):
    if y < x: return TakFP( TakFP(x-1.0,y,z), TakFP(y-1.0,z,x),
TakFP(z-1.0,x,y) )
    return z

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

Best regards,
Amund



More information about the Pypy-dev mailing list