浮動小数点数に1を掛ける関数を考えます:
void multiply_one(double *x)
{
static const volatile double one = 1.0;
*x *= one;
}
数学的には、この関数は入力をそのまま返す関数(恒等関数)です。浮動小数点数の場合はどうでしょうか?特に、この関数は、入力として与えられた浮動小数点数のビット列表現を変えるでしょうか?
多くの人は「変えないでしょ」「変わったとしても違いは重要じゃない」と思われるかもしれませんが、これはコンパイラーの最適化を考える上では重要な問題になります。もちろん、「浮動小数点数の細…
Source link
Views: 0