x = 1 y = 2 z = 3 def p(x,y): return z*(x + y) def q(z): global y if z <= 0: return y else: x = p(y,z) y = 1 + q(z - x) return z - x*y def r(x): def p(y,z): global x def q(y): global z def r(z): global y x = z + 1 y = y + 2 return x*y x = r(y) y = x + z z = y + z return z if y < z: return z else: x = q(y) y = r(x) z = x*y # pos return p(-z, y) y = 2*x x = q(x) z = p(x,y) return z def test_r(): global x,y,z x=1 y=2 z=3 return map (lambda i: (i, r(i)), range(-10,11)) ''' The above should return the following: In [11]: test_r() Out[11]: [(-10, 36), (-9, 156), (-8, 492), (-7, 1296), (-6, 3072), (-5, 6828), (-4, 14580), (-3, 30360), (-2, 62232), (-1, 126324), (0, 254892), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12), (7, 14), (8, 16), (9, 18), (10, 20)] '''