アルゴリズムの数値精度をチェックするためのベストプラクティスは何ですか? 「計算した結果が正しいことをどのように知るか」という問題を解決するための提案された手法はありますか? 可能であれば: C++ での数値精度の向上の例はありますか?
ご提案ありがとうございます。
Math::BigFloat / Math ::BigIntが役に立ちます。これを行うライブラリはたくさんありますが、どれが最適かはわかりません。他の誰かがあなたに素敵な答えを持っているかもしれません。
ただし、一般的には、2 回書くことができます。1 回目は無制限の精度で、もう 1 回は精度なしで、2 つを検証します。それが、私が書いた科学ソフトウェアで行うことです。それから、より洗練された速度強化を行う 3 分の 1 を書きます。このようにして、3つすべてを確認できます。念のために言っておきますが、3 つが完全に同じではないことはわかっていますが、確証の十分な有効数字が必要です。
どの程度の誤差を正確に取得するのが難しいかを実際に知ること -- 浮動小数点数の操作の順序が大きな違いを引き起こす可能性があることを覚えておいてください。それは本当に問題固有のものですが、特定の数値の相対的な大きさがわかっている場合は、操作の順序を変更して精度を得ることができます (たとえば、並べ替えられた順序でリストを乗算します)。これを調査するための2つの場所は、
たとえば、区間演算を見てください。
http://www.boost.org/doc/libs/1_53_0/libs/numeric/interval/doc/interval.htm
結果の上限と下限を生成します