### 6.60 RM G.1.1(56-58): Complex Types

"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 is True (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 is True should
attempt to provide a rational treatment of the signs of zero results and
result components. As one example, the result of the Argument
function should have the sign of the imaginary component of the
parameter X when the point represented by that parameter lies on
the positive real axis; as another, the sign of the imaginary component
of the Compose_From_Polar function should be the same as
(respectively, the opposite of) that of the Argument parameter when that
parameter has a value of zero and the Modulus parameter has a
nonnegative (respectively, negative) value."

Followed.