2013-03-15 25 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