コンパイラーがコードの最適化と実行速度の向上にますます優れていることはわかっていますが、私の質問は、浮動小数点演算を最適化して精度を高めることができるコンパイラーです。
たとえば、基本的なルールは、加算の前に乗算を実行することです。これは、浮動小数点数を使用した乗算と除算では、加算と減算ほどの不正確さは発生しませんが、加算と減算によって発生する不正確さの大きさが増加する可能性があるためです。多くの場合、最初に実行します。
したがって、次のような浮動小数点演算
y = x*(a + b); // faster but less accurate
に変更する必要があります
y = x*a + x*b; // slower but more accurate
上で示したように、速度を犠牲にして浮動小数点の精度を向上させるために最適化するコンパイラはありますか?それとも、浮動小数点演算の精度を見ずにコンパイラの速度を上げることの主な関心事ですか?
ありがとう
更新:選択された回答は、このタイプの最適化が機能しない非常に良い例を示しているため、コンパイラーはyを評価するためのより正確な方法を事前に知ることはできません。反例をありがとう。