libcの "sin"関数に問題があります。g ++最適化オプションがsin関数の値に影響する
#include <cmath>
#include <stdio.h>
int main(int argc, char **argv)
{
double tt = 6.28318530717958620000; // 2 * M_PI
double yy = ::sin(tt);
printf("%.32f\n", yy);
return 0;
}
任意の最適化オプションなし「のG ++」を使用して、上記のコードをコンパイルすると、それは出力だろう「-0.00000000000000024492127076447545」。 "-O3"オプションを指定すると "-0.00000000000000024492935982947064"と出力されます。
なぜ "-0.00000000000000024492935982947064"に "-O3"が含まれていないのですか? ありがとうございます。
g ++のバージョンと使用しているOSとハードウェアを知ることができますか? – Viet
g ++ 4.4.3、ubuntu 10.04、およびIntel(R)Core(TM)i3-2310M CPU @ 2.10GHz。感謝します。 –
'-ffast-math'オプションをチェックしてください。 –