Tôi gặp sự cố với chức năng "tội lỗi" của libc.tùy chọn tối ưu hóa g ++ ảnh hưởng đến giá trị của hàm 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;
}
Khi biên dịch mã trên bằng cách sử dụng "g ++" mà không có tùy chọn tối ưu hóa, nó sẽ xuất "-0.00000000000000024492127076447545". Nhưng nếu với tùy chọn "-O3", nó sẽ xuất ra "-0.00000000000000024492935982947064".
Tại sao nó không trả lại "-0.00000000000000024492935982947064" mà không có "-O3"? Cảm ơn trước.
Tôi có thể biết phiên bản g ++ nào và bạn đang sử dụng hệ điều hành và phần cứng nào? – Viet
g ++ 4.4.3, ubuntu 10.04 và Intel (R) Core (TM) i3-2310M CPU @ 2.10GHz. CẢM ƠN. –
Kiểm tra tùy chọn '-ffast-math' có lẽ. –