1

私はMPFR任意精度ライブラリを使い始めたばかりで、すぐに非常に奇妙な動作に遭遇します。これを使用する主な目的は、大きな引数の「トリガー」の精度を向上させることであり、これはMPFRで非常にうまく機能します。

しかし、それから私は簡単な数学をチェックすることにしました、そしてそれは信じられませんでした-厳密な答えを持つ単純な例でさえ、丸め誤差が存在し、使用される精度に依存しません。

1.1 * 1のような例でも、結果は1.10000000000000008881784 ...そしてこの結果は非常識な2000ビット精度(通常のdoubleでは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

4

1 に答える 1

3

これは、浮動小数点の精度の問題に対する標準的な答えのようです。これには、ビット数を増やしても問題が解決しない理由の説明が含まれています。

古い答え

MPFRFAQの質問7を参照してください。 とにかく、使用するビット数に関係なく、多くの数値は2進仮数で正確に表現できないため、常にエラーが発生します。適切な説明については、関連するSOの質問に対するこの回答を参照してください。

于 2010-02-26T07:56:10.620 に答える