Knowledge Base

BUG: /Ox and /4Ya Options Together Cause Incorrect Results

PSS ID Number: 149517

Article Last Modified on 11/2/1999


The information in this article applies to:


This article was previously published under Q149517

SYMPTOMS

Compiling source code that performs arithmetic calculations along with the /Ox and /4Ya compiler options together creates object code that may produce incorrect arithmetic calculation results at run time.

RESOLUTION

Do not use the /Ox and /4Ya compiler options together.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Sample Code to Illustrate Problem

C Compile options needed: /Ox /4Ya

   REAL*8 a(3), x, y

   a(1) = -1.D0
   a(2) = -2.D0
   a(3) = -3.D0

   x = 0.D0
   y = 0.23D0

   a(3) = 1.D0/SQRT(1.D0+x*x+y*y)
   a(1) = x*a(3)
   a(2) = y*a(3)

   PRINT *,'a(1) = ',a(1)
   PRINT *,'a(2) = ',a(2)
   PRINT *,'a(3) = ',a(3)

   END
				

Correct Output

a(1) = 0.000000000000000E+000
a(2) = 2.241476929214269E-001
a(3) = 9.745551866148997E-001

Output with /Ox /4Ya

a(1) = 0.000000000000000E+000
a(2) = 2.241476929214269E-001
a(3) = 2.241476929214269E-001


Additional query words: 4.00

Keywords: kbCodeGen KB149517
Technology: kbAudDeveloper kbFORTRANPower400NT kbFortranSearch kbZNotKeyword8