"Because the usual mathematical meaning of multiplication of a complex operand and a real operand is that of the scaling of both components of the former by the latter, an implementation should not perform this operation by first promoting the real operand to complex type and then performing a full complex multiplication. In systems that, in the future, support an Ada binding to IEC 559:1989, the latter technique will not generate the required result when one of the components of the complex operand is infinite. (Explicit multiplication of the infinite component by the zero component obtained during promotion yields a NaN that propagates into the final result.) Analogous advice applies in the case of multiplication of a complex operand and a pure-imaginary operand, and in the case of division of a complex operand by a real or pure-imaginary operand."
Not followed.
"Similarly, because the usual mathematical meaning of addition of a complex operand and a real operand is that the imaginary operand remains unchanged, an implementation should not perform this operation by first promoting the real operand to complex type and then performing a full complex addition. In implementations in which the
Signed_Zeros
attribute of the component type isTrue
(and which therefore conform to IEC 559:1989 in regard to the handling of the sign of zero in predefined arithmetic operations), the latter technique will not generate the required result when the imaginary component of the complex operand is a negatively signed zero. (Explicit addition of the negative zero to the zero obtained during promotion yields a positive zero.) Analogous advice applies in the case of addition of a complex operand and a pure-imaginary operand, and in the case of subtraction of a complex operand and a real or pure-imaginary operand."
Not followed.
"Implementations in which
Real'Signed_Zeros
isTrue
should attempt to provide a rational treatment of the signs of zero results and result components. As one example, the result of theArgument
function should have the sign of the imaginary component of the parameterX
when the point represented by that parameter lies on the positive real axis; as another, the sign of the imaginary component of theCompose_From_Polar
function should be the same as (respectively, the opposite of) that of theArgument
parameter when that parameter has a value of zero and theModulus
parameter has a nonnegative (respectively, negative) value."
Followed.