Fixing a bug for when math.factorial isn't available
[ejpi] / src / plugins / builtins.py
index d464e9d..f57520e 100644 (file)
@@ -29,9 +29,11 @@ abs = operation.generate_function(operator.abs, "abs", operation.Function.REP_FU
 try:
        fact_func = math.factorial
 except AttributeError:
-       def fact_func(num):
-               return num * fact_func(num - 1)
-factorial = operation.generate_function(math.factorial, "!", operation.Function.REP_POSTFIX, 1)
+       def fact_func(self, num):
+               if num <= 0:
+                       return 1
+               return num * fact_func(self, num - 1)
+factorial = operation.generate_function(fact_func, "!", operation.Function.REP_POSTFIX, 1)
 negate = operation.generate_function(operator.neg, "+-", operation.Function.REP_PREFIX, 1)
 square = operation.generate_function((lambda self, x: x ** 2), "sq", operation.Function.REP_FUNCTION, 1)
 square_root = operation.generate_function((lambda self, x: x ** 0.5), "sqrt", operation.Function.REP_FUNCTION, 1)