正確な浮動小数点減算定理
浮動小数点演算において、ステルベンツの補題またはステルベンツの補題[1]は、浮動小数点の差が正確に計算される条件を与える定理である。これは、1974年にその変種を発表したパット・H・ステルベンツにちなんで名付けられた。[2]
ステルベンツの補題 — 非正規数の浮動小数点数システムにおいて、および が浮動小数点数であり、


は浮動小数点数でもある。したがって、正しく丸められた浮動小数点減算

正確に計算されます。
シュテルベンツの補題は、コンピュータで最も広く使用されている浮動小数点数システムである
IEEE 754に適用されます。
証拠
を浮動小数点システムの基数、を精度
とします。

まず、いくつかの簡単なケースを考えてみましょう。
- がゼロの場合は となり、 がゼロの場合は となり、浮動小数点数の否定は常に正確であるため、結果は自明です。




- 結果がゼロで正確である場合。

- ならば も成り立つはずなので。この場合 なので、に制限された定理から結果が導かれます。





- の場合、と書くことができるので、 に制限された定理から結果が導かれます。




残りの証明では、一般性を失うことなく仮定します。

正の整数仮数と最小指数を使って書きます。



および は非正規になる可能性があることに注意してください。
と仮定しているわけではありません。


減算すると次のようになります。
とします。次の式が成り立ちます。


したがって は整数であり、したがって も整数であると結論付けることができます。


、 それで。
さらに、 なので、 となり、


これは、
したがって
浮動小数点数
も同様です。∎
注:およびが正規、つまり、であっても、 であることを証明することはできません。したがって も正規であることを証明することはできません。たとえば、2 つの最小の正の正規浮動小数点数 と の差は であり、これは必然的に非正規です。非正規数のない浮動小数点数システム(標準の段階的アンダーフローではなく非標準の flush-to-zero モードの CPU など) では、ステルベンツの補題は適用されません。








壊滅的なキャンセルとの関係
シュテルベンツの補題は、破滅的相殺の現象と対比される。
- ステルベンツの補題は、と が十分に近い浮動小数点数である場合、それらの差は浮動小数点演算によって正確に計算され、丸めは必要ないと主張しています。




- 破滅的な相殺現象とは、と が真の数値と の近似値である場合、その近似値が事前の丸め誤差、級数の切り捨て、物理的な不確実性、またはその他の原因から生じたものであるかどうかに関係なく、と の差の誤差がに反比例することです。したがって、とが近いほど、減算自体が正確に計算されたとしても、の近似値としては悪くなる可能性があります。











言い換えれば、ステルベンツの補題は、近い浮動小数点数の減算は正確であるが、持っている数値が近似値である場合、それらの正確な差であっても、減算したい数値の差から大きく離れる可能性があることを示しています。
数値解析での使用
ステルベンツの補題は、浮動小数点アルゴリズムの数値解析における誤差の境界に関する定理を証明するのに役立ちます。たとえば、辺の長さが、、(半周長)の三角形の面積に関するヘロンの公式は、浮動小数点演算で直接評価すると、細長い三角形に対して精度が低くなる可能性があります。ただし、 については、
ステルベンツの
補題
の助けを借りて、すべての入力に対して前方誤差が低いことが証明できます。 [3] [4] [5]





参考文献
- ^ ミュラー、ジャン=ミシェル;ブルーニー、ニコラス。デ・ディネシン、フィレンツェ。ジャンヌロ、クロード・ピエール。ミオアラ州ジョルデス。ルフェーブル、ヴァンサン。メルキオンド、ギョーム。ナタリー・レボル;トーレス、セルジュ (2018)。浮動小数点演算ハンドブック (第 2 版)。 Gewerbestrasse 11、6330 Cham、スイス: Birkhäuser。補題 4.1、p. 101.土井:10.1007/978-3-319-76526-6。ISBN 978-3-319-76525-9。
{{cite book}}: CS1 メンテナンス: 場所 (リンク)
- ^ Sterbenz, Pat H. (1974). 浮動小数点計算。イングルウッドクリフス、ニュージャージー州、アメリカ合衆国: Prentice-Hall。定理 4.3.1 と系、p. 138。ISBN 0-13-322495-3。
- ^ Kahan, W. (2014-09-04). 「針のような三角形の面積と角度の誤計算」(PDF)。数値解析入門クラスの講義ノート。2020-09-17に閲覧。
- ^ Goldberg, David (1991年3月). 「すべてのコンピュータ科学者が浮動小数点演算について知っておくべきこと」. ACM Computing Surveys . 23 (1). ニューヨーク、ニューヨーク州、アメリカ合衆国: Association for Computing Machinery: 5–48. doi :10.1145/103162.103163. ISSN 0360-0300. S2CID 222008826 . 2020年9月17日閲覧。
- ^ Boldo, Sylvie (2013 年 4 月)。Nannarelli, Alberto、Seidel, Peter-Michael、Tang, Ping Tak Peter (編著)。三角形の面積を計算する方法: 形式的な再考。第 21 回 IEEE コンピュータ算術シンポジウム。IEEE コンピュータ協会。pp. 91–98。doi : 10.1109/ ARITH.2013.29。ISBN 978-0-7695-4957-6. ISSN 1063-6889.