Now you'll need to use math.factorial(int(Decimal)) or write your own factorial function.
The storyline: Apropos of recent threads experimenting with high precision (arbitrary precision) numbers as a way to promote interest in "pure math" applications using Python, I discovered this morning that my Ramanujan Convergence script on repl.it <https://repl.it/@kurner/computepi> was broken all of a sudden (after working before), and set out to discover why. Answer: in Python 3.8, to which repl.it has newly upgraded, math.factorial no longer accepts Decimal type numbers, even if they're integral (integers). You can read the discussion here: https://bugs.python.org/issue33083 Here's the line of code that broke, and was fixed with explicit castings to int. term = (fact(int(c1*i))*(c2 + c3*i))/(pow(fact(int(i)),4)*pow(c4,4*i)) By the time of the final division, the numerator and denominator have been coerced back into Decimals and so will divide with the expected precision (set by the context): Where: ``` c1 = Decimal(4) c2 = Decimal(1103) c3 = Decimal(26390) c4 = Decimal(396) c5 = Decimal(9801) ``` For more context: https://github.com/4dsolutions/Python5/blob/master/Pi%20Day%20Fun.ipynb (I'm updating it now...) Kirby
_______________________________________________ Edu-sig mailing list -- edu-sig@python.org To unsubscribe send an email to edu-sig-le...@python.org https://mail.python.org/mailman3/lists/edu-sig.python.org/