# Microsoft KB Archive/100377

 Knowledge Base

# FIX: F1001: confold.c Line 253, Negative Integer Exponent

Article ID: 100377

APPLIES TO

• Microsoft FORTRAN PowerStation 1.0 Standard Edition
• Microsoft Fortran PowerStation 1.0a for MS-DOS
• Microsoft FORTRAN PowerStation 32

## SYMPTOMS

An attempt to compile an application fails and Microsoft FORTRAN PowerStation version 1.0 for MS-DOS displays the following message:

fatal error F1001: INTERNAL COMPILER ERROR
(compiler file '@(#)confold.c:1.144', line 253)
Contact Microsoft Product Support Services

FORTRAN PowerStation version 1.0a for MS-DOS displays the following error message:

fatal error F1001: INTERNAL COMPILER ERROR
(compiler file '@(#)confold.c:1.144', line 254)
Contact Microsoft Product Support Services

## CAUSE

The command line specifies the /Ox optimization and the code contains an expression that computes a negative integer power of a constant integer or of an integer expression. The error above occurs when the compiler processes the unary minus operator in an integer exponentiation expression.

## RESOLUTION

There are two methods to work around this problem:

• Modify the compiler command line to specify the /Oxp compiler option switch.
• Modify the source code to remove the unary minus operator from integer expressions used as exponents. Assign the exponent to a temporary variable and negate the value. Then specify the temporary as the exponent.

## STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem was fixed in FORTRAN PowerStation 32, version 4.0.

The following sample code demonstrates this problem:

### Sample Code #1

```c Compiler options needed: /Ox

program test
integer j
real    x

j = 1
x = 2**(-j)
print *, x
end
```

The following sample code demonstrates one method to work around this problem:

### Sample Code #2

```c Compile options needed: /Ox

program test
integer j
real    x

j = 1
j = -j      ! Negation occurs here.
x = 2**(j)
print *, x
end
```