Вопрос округления MPFR - PullRequest
       87

Вопрос округления MPFR

0 голосов
/ 26 февраля 2010

Я только начал работать с библиотекой произвольной точности MPFR и довольно скоро столкнулся с очень странным поведением. Основная цель его использования состояла в том, чтобы улучшить точность триггеров аргументов lagre, и это прекрасно работает в MPFR.

Но потом я решил проверить простую математику, и это было невероятно - даже в простых примерах со строгими ответами ошибки округления существуют и не зависят от используемой точности.

Даже в примере, подобном 1.1 * 1, результат равен 1.10000000000000008881784 ... И этот результат дан с безумной точностью 2000 бит (53 в обычном двойном)!

Возможно, это проблема моей системы, но даже в онлайн MPFR подобные проблемы существуют. Вы можете попробовать такой пример онлайн: http://ex -cs.sist.ac.jp / ~ tkouya / try_mpfr.html

1 * 1.1 @ 64 бита = 1.10000000000000000002

Но в онлайн-версии ошибка увеличивается с увеличением точности, но в моей установке - нет.

Моя система: Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2

1 Ответ

3 голосов
/ 26 февраля 2010

Похоже, это канонический ответ на вопросы точности с плавающей запятой . Он включает в себя объяснение того, почему большее количество бит не решает проблему.

Старый ответ

См. Вопрос 7. Часто задаваемых вопросов по MPFR. В любом случае, всегда будет какая-то ошибка, поскольку многие числа не совсем точно представляются двоичными мантиссами, независимо от того, сколько битов вы используете. См. этот ответ на соответствующий вопрос SO для хорошего объяснения.

...