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".