Я только начал работать с библиотекой произвольной точности MPFR и довольно скоро столкнулся с очень странным поведением. Основная цель его использования заключалась в повышении точности «триггеров» с большими аргументами, и это очень хорошо работает в 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