エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください
Twitterで共有ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します
void multiply_one(double *x) { static const volatile double one = 1.0; *x *= one; } 数学的には、... void multiply_one(double *x) { static const volatile double one = 1.0; *x *= one; } 数学的には、この関数は入力をそのまま返す関数(恒等関数)です。浮動小数点数の場合はどうでしょうか?特に、この関数は、入力として与えられた浮動小数点数のビット列表現を変えるでしょうか? 多くの人は「変えないでしょ」「変わったとしても違いは重要じゃない」と思われるかもしれませんが、これはコンパイラーの最適化を考える上では重要な問題になります。もちろん、「浮動小数点数の細かいことは気にしない」モードなら最適化して良いでしょうが、ここでは浮動小数点数の重箱の隅まで気にするコンパイラーを考えます。 簡単なプログラムを作って、いくつかの値について試してみます: #include <inttypes.h> #include <stdio.