The f18 clause 16.9.80 description of the FRACTION(X) intrinsic states:
Result Value. The result has the value .... If X has the value zero, the result is zero. If X is an IEEE NaN, the result is that NaN. If X is an IEEE infinity, the result is an IEEE NaN.
This clause does not specify whether fraction(-0.0) should be -0.0 or +0.0.
However, a folded result and a runtime result should be consistent, and
returning -0.0 is more in line with the result for fraction(NaN).
For this test:
print '(2f6.1)', 0.0, fraction(0.0) call f(0.0) print '(2f6.1)', -0.0, fraction(-0.0) call f(-0.0) end subroutine f(x) print '(2f6.1)', x, fraction(x) end
Current output is:
0.0 0.0 0.0 0.0 -0.0 -0.0 -0.0 0.0
Change that to:
0.0 0.0 0.0 0.0 -0.0 -0.0 -0.0 -0.0