【发布时间】:2013-10-30 15:58:08
【问题描述】:
我一直在用 python 做简单的数值实验,比如计算 阶乘。例如,计算 32 的阶乘:
我的日常:
2.6313083693369503e+35
来自 scipy.misc:
2.6313083693369355e+35
我想指出我的例程计算阶乘的对数, 它计算从 1 到 32 的对数之和(在这种情况下) 然后我只使用 exp 函数(我这样做是因为从 Fortran 90)。
令人惊讶的是正确答案是
263130836933693530167218012160000000
根据pari/gp。
如果有人能指出我可以寻找的参考资料,我会非常高兴 Python 中的正确数字答案。文档没问题,但只有在需要时 “短”数字。
【问题讨论】:
-
如果您能提供您的例程代码,我们将不胜感激。
-
我不确定您在寻找什么。您使用
float精度重新实现了math.factorial,然后通过移入和移出日志空间来提高精度,最后得到几位数的错误。 Python 与此无关,在 fortran 中使用双精度也会遇到同样的问题。 -
如果您正在处理整数,python 会为您提供大整数,因此您可以精确计算阶乘。