Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
7568 Discussions

( 65536 - 65536 ) / 65536 = -92559592117431994000000000000000000000000000000000000000000000.000000

SergeyKostrov
Valued Contributor II
231 Views

Please take a look at a Test-Case in DEBUG configuration (!):

...
printf( ">> Result 1: %f\\n", ( ( 65536 - 65536 ) / 65536 ) * 100.0f );
printf( ">> Result 2: %f\\n", ( ( 65536 - 65536 ) / 65536 ) );
...

Here are outputs for different C/C++ compilers:

Intel C++ compiler ( Composer XE 2011 Update 9 ):

>> Result 1: 0.000000
>> Result 2: -92559592117431994000000000000000000000000000000000000000000000.000000

Intel C++ compiler command line options:
/c /Od /I "..\\..\\Include" /D "WIN32" /D "_CONSOLE" /D "_DEBUG" /D "_WIN32_ICC"
/D "_VC80_UPGRADE=0x0710" /D "_UNICODE"
/D "UNICODE" /GF /EHsc /RTC1 /MTd /GS /fp:precise /Yu"Stdphf.h" /Fp"Debug\\IccTestAppD.pch" /Fo"Debug/"
/W5 /nologo /ZI /TP /U "_WIN32_MSC" /U "_WIN32CE_MSC" /U"WIN32_PLATFORM_PSPC"
/U"WIN32_PLATFORM_WFSP" /U "WIN32_PLATFORM_WM50" /U "_WIN32_MGW" /U "_WIN32_BCC"
/U "_COS16_TCC" /Qopenmp /Qdiag-disable:111,673

Microsoft C++ compiler:

>> Result 1: 0.000000
>> Result 2: 0.000000

Borland C++ compiler:

>> Result 1: 0.000000
>> Result 2: 0.000000

MinGW C++ compiler:

>> Result 1: 0.000000
>> Result 2: 0.000000

Turbo C++ compiler:

>> Result 1: 0.000000
>> Result 2: 0.000000

Development Environment:

OS: Windows XP 32-bit
IDE: Visual Studio 2005 SP1
Compilers: Intel C++ / Microsoft C++ / Borland C++ / MinGW / Turbo C++

Best regards,
Sergey

0 Kudos
7 Replies
Om_S_Intel
Employee
231 Views
I could not reproduce the issue:

c:\forum\U105043>type tst.cpp

// tst.cpp

#include

int main()

{

printf( ">> Result 1: %f\n", ( ( 65536 - 65536 ) / 65536 ) * 100.0f );

printf( ">> Result 2: %f\n", ( ( 65536 - 65536 ) / 65536 ) );

return 0;

}

c:\forum\U105043>icl /fp:precise /MTd /Qopenmp tst.cpp

Intel C++ Compiler XE for applications running on IA-32, Version 12.1.1.258 Build 20111011

Copyright (C) 1985-2011 Intel Corporation. All rights reserved.

tst.cpp

Microsoft Incremental Linker Version 10.00.40219.01

Copyright (C) Microsoft Corporation. All rights reserved.

-out:tst.exe

-nodefaultlib:libiompprof5mt.lib

-nodefaultlib:libiompprof5md.lib

-defaultlib:libiomp5md.lib

-nodefaultlib:vcomp.lib

-nodefaultlib:vcompd.lib

tst.obj

c:\forum\U105043>tst

>> Result 1: 0.000000

>> Result 2: 0.000000

Is there something I am missing?

SergeyKostrov
Valued Contributor II
231 Views
...
c:\forum\U105043>icl /fp:precise /MTd /Qopenmp tst.cpp

You didn't set all my compileroptions.

Intel C++ Compiler XE for applications running on IA-32, Version 12.1.1.258 Build 20111011

Is there something I am missing?


My Intel C++ Composerversion is:

Intel C++ Composer XE 2011 Update 9, Version 12.1.1109.2005

Did you try the test case inthe Debug and Releaseconfigurations? As I stated in my initial post it happens in a Debug
configuration only.

SergeyKostrov
Valued Contributor II
231 Views
Is there something I am missing?


Pleasetry with these compiler options:

/c /Od/D "WIN32" /D "_CONSOLE" /D "_DEBUG" /D "_VC80_UPGRADE=0x0710" /D "_UNICODE"
/D "UNICODE" /GF /EHsc /RTC1 /MTd /GS /fp:precise /W5 /nologo /ZI /TP/Qopenmp

Best regards,
Sergey

Om_S_Intel
Employee
231 Views

You compiler version string does not seem to be correct.

I am still not able to reproduce the issue.

c:\forum\U105043> icl /Od /D "WIN32" /D "_CONSOLE" /D "_DEBUG" /D "_UNICODE" /D "UNICODE" /GF /EHsc /RTC1 /MTd /GS /fp:precise /W5 /ZI /TP /Qopenmp tst.cpp

Intel C++ Compiler XE for applications running on IA-32, Version 12.1.1.258 Build 20111011

Copyright (C) 1985-2011 Intel Corporation. All rights reserved.

tst.cpp

tst.cpp(9): warning #181: argument is incompatible with corresponding format str

ing conversion

printf( ">> Result 2: %f\n", ( ( 65536 - 65536 ) / 65536 ) );

^

Microsoft Incremental Linker Version 10.00.40219.01

Copyright (C) Microsoft Corporation. All rights reserved.

-out:tst.exe

-debug

-pdb:tst.pdb

-nodefaultlib:libiompprof5mt.lib

-nodefaultlib:libiompprof5md.lib

-defaultlib:libiomp5md.lib

-nodefaultlib:vcomp.lib

-nodefaultlib:vcompd.lib

tst.obj

c:\forum\U105043>tst

>> Result 1: 0.000000

c:\forum\U105043> cl /Od /D "WIN32" /D "_CONSOLE" /D "_DEBUG" /D "_UNICODE" /D

"UNICODE" /GF /EHsc /RTC1 /MTd /GS /fp:precise /W3 /ZI /TP /openmp tst.cpp

Microsoft 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86

Copyright (C) Microsoft Corporation. All rights reserved.

tst.cpp

Microsoft Incremental Linker Version 10.00.40219.01

Copyright (C) Microsoft Corporation. All rights reserved.

/out:tst.exe

/debug

tst.obj

c:\forum\U105043>tst

>> Result 1: 0.000000

>> Result 2: 0.000000

SergeyKostrov
Valued Contributor II
231 Views

You compiler version string does not seem to be correct.
...


What exactly do you mean? I don't think that a '...compiler version string...' created that problem.

Best regards,
Sergey

Om_S_Intel
Employee
231 Views
The compiler is rightforthe warning on the following statement :

printf( ">> Result 2: %f\n", ( ( 65536 - 65536 ) / 65536 ) );

The Intel compiler generated binary produces the same result as Microsoft compiler generated binary.

SergeyKostrov
Valued Contributor II
231 Views
Did you try tests in Debug and Release configurations with my compiler options?

I'll try to do another set of tests some time later and will provide more technical details.

Best regards,
Sergey
Reply