2013-03-15 22 views
0

根据the documentation
中的.exp()操作Python的十进制模块“使用...正确舍入”。Python的十进制模块和表制造商的难题

因为table maker's dilemma的,我希望这是没有保证的,因为我喜欢的保证
,它是与适度低精度不会采取,例如正常的前瞻性投入计算,一年的时间。

Python如何解决这个问题?
(是版本之间有什么不同?)

+0

所以你会很快乐,错误的回答更快? – 2013-03-15 05:09:58

+0

是的。 (15 char min) – 2013-03-15 05:43:24

+0

如果你不需要精确舍入,并且需要性能,那么你可能不应该使用'Decimal'类型,因为在现代硬件上,基数-10的计算比基数-2慢得多。坚持使用Python的float类型,或者如果56位不够用,首先要处理像MPFR/bigfloat这样的东西。 – 2013-03-15 05:45:49

回答

3

exp()pow()功能是不同的。

您链接到的状态表明x y的“制表者制造者的困境”解释不能通过任何已知的有限时间的算法进行正确舍入。但是,对于其域的所有子集来说,情况显然不是这样。如果我们将域限制为x = 3和y = 2,那么我可以告诉你正确答案是什么。

一个快速谷歌搜索大卫Defour,弗洛朗日Dinechin,让 - 米歇尔·穆勒(CiteSeerPDF)轮番上涨的双精度运算正确的舍入指数函数,。本文提供了一种算法,用于计算正确舍入的exp()并提供其运行时间的最坏情况界限。

这不是radix = 10的情况,但它显示了表制造商的困境不一定适用于exp()函数。

+0

+1不错的答案! – 2013-03-15 05:39:16