数値解析に関するレポート問題をやっていてはまったポイント。
double a = sqrt(3.0);
double b = 2*a;
double x = 102 * b - 200 * a;
double y = 102 * b; y -= 200 * a;
assert(x == y); // this assertion fails
確認はgcc 3.4.4 (on cygwin)にて。コンパイルオプションに-O0(最適化オフ)をつけてもこうなる。逆アセンブルは気力が無いのでやらないけど、xの計算がごりごりと展開されているのかな。