Hi
This standalone example illustrates my problem:
#include <iostream> int main() { double x = 1.2e-154; double y = 6.0e-156; x *= y; std::cout << x << std::endl; }
Compiling with both MSVC11 and Intel 16.0 update 1, 64bit release with /fp:precise and (for Intel) /Qftz is NOT set.
Output:
$ ./ftz_msvc11.exe 7.2e-310 $ ./ftz_icpc16.exe 0
Same thing on linux, gcc returns the denormal, icpc returns zero.
So it seems that the Intel code is flushing the denormal even though I haven't actually asked it to. Is this expected behaviour? The full command line is
/GS /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"x64\Release\vc110.pdb" /fp:precise /D "__INTEL_COMPILER=1600" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Oi /MD /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\" /Qprof-dir "x64\Release\" /Fp"x64\Release\ftz.pch"
Many thanks,
Andrew