2Sum [ 1 ]は、浮動小数点加算演算における正確な丸め誤差を計算する浮動小数点アルゴリズムです。
2Sum とその派生アルゴリズム Fast2Sum は、1965 年に Ole Møller によって初めて発表されました。[ 2 ] Fast2Sum は、補償加算アルゴリズム などの他のアルゴリズムで暗黙的に使用されることがよくあります。[ 1 ] Kahan の加算アルゴリズムは 1965 年に初めて発表され、[ 3 ] Fast2Sum は後に 1971 年にDekkerによってdouble-double 算術アルゴリズム用にそこから分離されました。[ 4 ] 2SumとFast2Sum という名前は、1997 年にShewchukによって遡及的に適用されたようです。[ 5 ]
2つの浮動小数点数が与えられた場合そして2Sum は浮動小数点数の合計を計算します最も近い値に丸められ、浮動小数点誤差となることによって、 どこそしてそれぞれ加算と減算を最も近い値に丸めた値を表します。誤差それ自体が浮動小数点数です。
浮動小数点演算が正しく最も近い値に丸められ(同点の場合はいずれにせよ解決される)、IEEE 754のデフォルトであり、合計がオーバーフローせず、アンダーフローする場合は徐々にアンダーフローする場合、次のことが証明できる。[ 1 ] [ 6 ] [ 2 ]
2Sum のバリアントであるFast2Sumは、指数が 2 または 3 の浮動小数点演算に対して 3 つの浮動小数点演算のみを使用します。は少なくとも指数と同じくらい大きい。例えば、: [ 1 ] [ 6 ] [ 7 ] [ 4 ]
条件が満たされない場合でも、2Sum と Fast2Sum は誤差の妥当な近似値を提供することが多い。これにより、入力がソートされていない場合や丸めモードが通常とは異なる場合でも、補償加算、ドット積などのアルゴリズムのエラーを低く抑えることができます。[ 1 ] [ 2 ]
2Sum および Fast2Sum のより複雑なバリアントは、最も近い値への丸め以外の丸めモードに使用されます。[ 1 ]