(編集済み)
算術演算の最大累積誤差を知ることができるライブラリまたはツールはありますか?
たとえば、反復計算を行うと...
myVars = initialValues;
while (notEnded) {
myVars = updateMyVars(myVars)
}
... 最後に、計算された値だけでなく、潜在的なエラー (個々の操作の結果が各オペランドの範囲制限をとった場合の可能な値の範囲) も知りたいです。
私はすでにEADouble.java (エラー アカウンティングの EA)という Java クラスを作成しました。これは、いくつかの基本的な操作のために、正と負の最大誤差と計算値を保持および更新しますが、四角い車輪を再発明することになるのではないかと心配しています。 .
ライブラリ/Javaの何か/何か? 助言がありますか?
- 7 月 11 日に更新: 既存のライブラリを調査し、サンプル コードへのリンクを追加しました。
- フェローの方がコメントされていたように、区間演算という概念があり、それについては以前に質問(不確実性(区間)演算ライブラリは良いですか?)がありました。私の意図については、いくつかの小さな問題があります。
- 上限と下限よりも「主な」値に関心があります。ただし、オープン ライブラリにその付加価値を追加することは簡単です。
- エラーを独立した浮動小数点として考慮すると、精度が向上する可能性があります (たとえば、加算の場合、上限はULP全体ではなくULPの半分だけインクリメントされます)。
- 私が見たライブラリ:
- ia_math (Java。主な値を追加するだけです。これまでの私のお気に入り)
- ブースト/数値/間隔(C++、非常に複雑/完全)
- ErrorProp (Java、会計値、標準偏差としてのエラー)
- サンプル コード ( TestEADouble.java ) は、弾道シミュレーションと数 e の計算を正常に実行します。ただし、これらはそれほど要求の厳しいシナリオではありません。