Found at:
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/0f1d7da66fa015c2
print *, (-2.0)**2.0
end
is invalid. gfortran should print a diagnostic for -std=f95/f2003/
f2008 as NAG
f95 does:
Error: Negative floating-point value raised to a real power
Fortran 2003 in the second sentence of the second paragraph of "7.1.8
Evaluation of Operations":
"Raising a negative-valued primary of type real to a real power is
prohibitted."
The question is whether one needs to reject it completely or only with
-std=f95. Steve (see thread) thinks the constant folding gets it wrong
(-> gives "4.0").
Current results:
- Runtime and compile time evaluation (ifort, gfortran, g95):
-2.0**2.0 = 4.0
-2.0**1.9 = NaN
- Mathematica:
-2^2 = 4, -2.0^2.0 = -4.0
2.0^1.9 = -3.73213