To: J3 Members J3/16-141r1
From: Van Snyder & Robert Corbett
Subject: Questions without answers or edits concerning Clause 14
Reference: 16-007
Date: 2016 February 11
General: For the arithmetic functions with two arguments, e.g.,
IEEE_REM, are arguments with different radices supported? It should
either be stated explicitly, or denied explicitly.
/JOR: ISO/IEC 60559:2011 requires the operands of the general
arithmetic operations to be homogeneous. The new IEEE arithmetic
functions added to the Fortran 2015 draft require homogeneous
arguments. Of the IEEE arithmetic functions carried over from
Fortran 2008, only IEEE_REM is not well-defined for mixed radix
arguments. Paper 16-164r1 provides edits to fix IEEE_REM.
[423:12 14.3p1] In the IEEE_INVALID list item, we see that IEEE_INVALID
occurs when X is real and has a nonzero negative value. Does it signal
for IEEE_SQRT(-0.0)?
/JOR: ISO/IEC 60559:2011 does not permit an invalid operation exception
to be signaled for the square root of -0.
[427:0+2] Does the value of a named constant depend upon the rounding
modes?
/JOR: The editor asserts that evaluation of constant expressions does
not occur during execution and so is not subject to the dynamic
rounding modes. Therefore, the values of named constants do not depend
on the dynamic rounding modes.
[431:1 14.10p4] Is the assertion of the paragraph correct, or are the
elemental functions only provided for all real X and Y of kinds for
which IEEE_SUPPORT_DATATYPE ( X ) or IEEE_SUPPORT_DATATYPE ( Y ) has
the value true?
/JOR: The elemental functions are provided for all real arguments.
The restrictions prohibit those functions from being invoked with
non-IEEE arguements, but they permit function references with non-IEEE
arguments to appear in a standard-conforming programs provided those
function references are not executed.
[437:37-38 14.11.18p6] Should the results be ABS(Y) and ABS(X)?
/JOR: No. ISO/IEC 60559:2011 requires the result of the operation
maxNum to be one of the operands if the operands are numbers.
[438:34-35 14.11.20p6] Should the results be ABS(X) and ABS(Y)?
/JOR: No. ISO/IEC 60559:2011 requires the result of the operation
minNum to be one of the operands if the operands are normal.
[439:14 14.11.21p6] Does "in the direction of Y" mean "in the direction
of the sign of Y" or "in the direction from X to Y?" E.g., is
IEEE_NEXT_AFTER ( 1.0, 0.5 ) == 1.0 + EPSILON(1.0) or 1.0 -
EPSILON(1.0)?
/JOR: It means in the direction from X to Y. The text of the standard
seems clear.
[439:30 14.11.12p6] The result value paragraph says that only
IEEE_INVALID can signal from IEEE_NEXT_DOWN. Does IEEE_INEXACT signal
if the result is subnormal? Can IEEE_UNDERFLOW signal?
/JOR: ISO/IEC 60559:2011 says that the operation nextDown is quiet
(does not signal exceptions) except when the operand is an sNaN. The
only exception the operation can signal is invalid operation.
[440:7 14.11.13p6] The result value paragraph says that only
IEEE_INVALID can signal from IEEE_NEXT_UP. Does IEEE_INEXACT signal if
the result is subnormal, e.g., from IEEE_NEXT_UP ( 0.0 )? Can
IEEE_OVERFLOW signal, e.g., from IEEE_NEXT_UP ( HUGE(0.0) )?
/JOR: ISO/IEC 60559:2011 says that the operation nextUp is quiet
(does not signal exceptions) except when the operand is an SNAN. The
only exception the operation can signal is invalid operation.
[443:18-22 14.11.32] Does IEEE_RINT signal with the same signals and
under the same conditions as IEEE_INT?
/JOR: No. IEEE_INT returns an integer value, and corresponds to a
convert operation in IEEE ISO/IEC 60559:2011. IEEE_RINT returns a
floating-point value, and corresponds to the appropriate round
operation in ISO/IEC 60559:2011. The exceptions for the two forms
of operations are different.
[443:29 14.11.33p3] Is decimal radix X allowed?
/JOR: ISO/IEC 60559:2011 defines the operation scaleB "for all
supported floating-point formats available for arithmetic".
Hence, the operation scaleB is defined for supported decimal
formats that are available for arithmetic.