J3/06-124
To: J3
From: Michael Ingrassia
Subject: Request for Interp: IEEE_SUPPORT_DATATYPE vs.
mathematical equivalence
Date: 2006 January 30
QUESTION:
Does the function IEEE_SUPPORT_DATATYPE
(Section 14.8) override the mathematical
equivalence rule (Section 7.1.8.3)?
For example, could the program
PROGRAM MAIN
USE, INTRINSIC :: IEEE_ARITHMETIC
USE, INTRINSIC :: IEEE_FEATURES
X = 2.0 + 2.0
PRINT *, X
END
be executed as
PROGRAM MAIN
USE, INTRINSIC :: IEEE_ARITHMETIC
USE, INTRINSIC :: IEEE_FEATURES
X = 220.0*(1.0/55.0)
PRINT *, X
END
if IEEE_SUPPORT_DATATYPE(X) is .TRUE.?
Background:
The committee recently ruled that 2.0 + 2.0 must produce
the value 4.0 if IEEE_ARITHMETIC is in effect. I agree
that if the particular operation the processor implements
is addition of 2.0 and 2.0, the result must be 4.0.
However, if IEEE_ARITHMETIC does not override the
mathematical equivalence rule, the requirement is essentially
meaningless, since there is no assurance that the expression
in the program is the expression that will be evaluated.