多くの浮動小数点計算を行うアプリケーションに取り組んでいます。Intel x86 では、倍精度浮動小数点値を持つ VC++ を使用します。私たちの計算は10 進数n桁まで正確であると主張しています (現在は 7 桁ですが、15 桁を主張しようとしています)。
結果がわずかに変化した場合 (コードのリファクタリング、クリーンアップなどにより)、他のソースに対して結果を検証するために多くの努力を払います。FPU 制御状態、コンパイラ/オプティマイザ、浮動小数点モデル、演算自体 (つまり、アルゴリズム自体) の全体的な順序など、多くの要因が全体的な精度に影響することはわかっていますが、固有の不確実性を考えると、 FP 計算 (たとえば、0.1 を表すことはできません) では、すべての計算について特定の精度を主張することは無効に思えます。
私の質問はこれです: 任意の種類の分析 (間隔分析など) を行わずに、一般的に FP 計算の精度について何らかの主張をすることは有効ですか? もしそうなら、どのような主張が可能で、その理由は何ですか?
編集:
入力データがたとえば小数点以下n桁まで正確であるとすると、倍精度が使用されていることを考えると、任意の計算の結果について何らかの保証を行うことができますか? たとえば、入力データの有効桁数が 8 桁の場合、出力の有効桁数は少なくとも 5 桁になります... ?
私たちは数学ライブラリを使用しており、それらが行う保証または行わない保証については認識していません。私たちが使用するアルゴリズムは、必ずしも正確に分析されているわけではありません。ただし、特定のアルゴリズムが与えられたとしても、実装は結果に影響します (たとえば、2 つの加算演算の順序を変更するだけです)。たとえば、倍精度を使用する場合、固有の保証はありますか?
別の編集:
私たちは、他の情報源に対して結果を経験的に検証します。では、たとえば 10 桁の精度を達成できたとき、私たちは幸運に恵まれているのでしょうか?