J3/99-158r1
Date: 7th June 1999
To: J3
From: Dick Hendrickson and John Reid
Subject: Edits re IEEE modules
We propose the following edits in response to comments from Malcolm Cohen
(J3/99-154 and emails) and William Clodius (email).
2. P and R for IEEE_SELECTED_REAL_KIND should be INTENT(IN)
[385:36] After "procedures", add "defined in the modules".
[385:37] After the text of edit 1, add "The dummy arguments of the
functions have INTENT(IN)."
4. Chapter 15 says near the top
"The module IEEE_ARITHMETIC behaves as if it contained a USE statement
for IEEE_EXCEPTIONS." This does not actually mean that anything from
IEEE_EXCEPTIONS is visible via IEEE_ARITHMETIC! (For instance, there
might be a global PRIVATE statement in the IEEE_ARITHMETIC module).
[381:7] Before "." add "and everything that is PUBLIC in IEEE_EXCEPTIONS
is PUBLIC in IEEE_ARITHMETIC".
6. [383:18-20] says "Similar rules apply to the evaluation of specification
expressions on entry to a procedure, to format processing,
and to intrinsic operations: no signaling flag shall be
set quiet and no quiet flag shall be set signaling because
of an intermediate calculation that does not affect the
result."
On the face of it, this means that
INTEGER X(100+INT(0.0*SQRT(-1.0)))
is not allowed to set the INVALID flag!
[383:11+]. Add new para:
Evaluation of a specification expression may cause an exception to signal.
[383:17-18] Delete "to the evaluation of specification expressions on entry to
a procedure,"
Delete "," before "and to".
7. IEEE_UNORDERED: result characteristics should be default logical.
[398:39] Change "Same as X" to "Default logical".
8. What happens with IEEE_SCALB(X) when X is infinite? It should be consistent
with 2**I*X for X infinite.
[392:8] After the first "If" add "X is finite and"
[392:12+] Add
Case(iv): If X is infinite, the result is the same as X; no exception
signals.
9. [392:7] should include the value zero.
[392:7] Change "within ... numbers" to "representable as a normal number".
10. To make the meaning clearer:
[390:32] Delete "IEEE_DIVIDE_BY_ZERO signals and".
[390:33] After "otherwise" add "; IEEE_DIVIDE_BY_ZERO signals".
11. For consistency:
[391:11] Change "Overflow" to "IEEE_OVERFLOW".
[391:12] Change "underflow" to "IEEE_UNDERFLOW".
12. For consistency with the IEEE standard, IEEE_REM should take its kind
from the argument with the greater precision (just like *, +, etc.).
[391:21] Change "Same as X" to "Real with the kind type parameter of
whichever argument has the greater precision".
13. Since IEEE_SUPPORT_DATATYPE does not require the support of negative
zero or Nan, it is confusing to include reference to unary -.
[394:18] Add "binary" before "operations".