mpmath
претендует на поддержку «арифметики с произвольной точностью с плавающей запятой».Я столкнулся с предел точности mpmath с плавающей запятой?
И все же. , ,
>>> import mpmath
>>> 1 + mpmath.erf(-5.921)
mpf('1.1102230246251565e-16')
>>> 1 + mpmath.erf(-5.922) # I expect a smaller positive number here.
mpf('0.0')
Я что-то не хватает? Или это фундаментальное ограничение mpmath
?
@jonrsharpe предположил, что проблема в том, что я отправил float
в erf
. Тем не менее, приведенный ниже код показывает, что это не проблема:
>>> 1 + mpmath.erf(mpmath.mpf('-5.922'))
mpf('0.0')
Арифметика 'mpmath' может быть произвольно-точной, но * вы передаете ей' float', что не является *. – jonrsharpe
* «Невозможно представить какой-либо интерес в' mpmath', если он не является 'float' * * - да, есть, см. Http://mpmath.googlecode.com/svn-history/r1229/trunk/doc /build/basics.html?highlight=float#number-types и попробуйте 'mpf ('- 5.922')'. Вам также может потребоваться настроить точность. – jonrsharpe
Нет, я не вижу много смысла совершать кругосветное путешествие через 'str' - дело в том, что как только вы начнете использовать' float', трудно гарантировать возврат к произвольной точности. Вы должны использовать объекты 'mpf' как можно раньше. – jonrsharpe