FIX: Complex Constant Folding Produces Incorrect Results (78927)



The information in this article applies to:

  • Microsoft FORTRAN Compiler for MS-DOS 5.1
  • Microsoft FORTRAN compiler for OS/2 5.1

This article was previously published under Q78927

SYMPTOMS

The compiler attempts to calculate simple arithmetic expressions involving complex constants at the time of compilation. It produces incorrect results.

RESOLUTION

Assign complex constants to variables and use the complex variables in all arithmetic expressions.

STATUS

Microsoft has confirmed this to be a problem in the products listed above. This problem was corrected in FORTRAN PowerStation, version 1.0.

MORE INFORMATION

The following code can be used to reproduce the problem:

Sample code

       complex a,b,c

      b = (3,4)

      a = (3,4)**2.
      b = b**2

      c=(3,4)**2

c The above expression produces incorrect results because the
c compiler "precalculates" the multiplication incorrectly. The
c expression that has a decimal point on the 2 is not seen as a
c multiplication so it is not calculated by the compiler.  The run-
c time correctly calculates complex expressions.

      print*, a
      print*, b
      print*, c  ! incorrect result
      end
				
Output from program:

(-7.000000,24.000000)
(-7.000000,24.000000)
(-39.000000,-120.000000) ! should also be (-7.000000,24.000000)


Modification Type:MajorLast Reviewed:10/23/2003
Keywords:kbfix KB78927