-freciprocal-math
GCCでは、次のコードを変更します
double a = b / c;
に
double tmp = 1/c;
double a = b * tmp;
GCC のマニュアルでは、このような最適化は安全ではなく、IEEE 標準に準拠していないと述べられています。しかし、例が思い浮かびません。これについて例を挙げていただけますか?
-freciprocal-math
GCCでは、次のコードを変更します
double a = b / c;
に
double tmp = 1/c;
double a = b * tmp;
GCC のマニュアルでは、このような最適化は安全ではなく、IEEE 標準に準拠していないと述べられています。しかし、例が思い浮かびません。これについて例を挙げていただけますか?
10 で割ることと 0.1000000000000000055511151231257827021181583404541015625 を掛けることは同じではありません。
おそらく別のコンパイラフラグを考えているのでしょうが・・・
一部のプロセッサには、近似逆数を計算するための命令があります。x86 の RCPSS (SIMD 命令) が思い浮かびます。相対誤差は 1.5 ∗ 2^−12 です。そのフラグを使用すると、コンパイラが近似逆数命令を選択できるようになる可能性があります。これは、アプリケーションによっては安全ではない可能性があります。
お役に立てれば。