For real numbers
x
and
y,
cexp()
behaves according to Euler's formula:
cexp(x + I*y)
=
(
e**
x,
*
cos(
y,
Ns,
Pc,
Pc,
+,
Po,
Ns
I
*
e**
x
*
sin(
y,
Ns,
Pc,
Pc
Generally speaking, infinities, zeroes and NaNs are handled as would
be expected from this identity given the usual rules of floating-point
arithmetic.
However, care is taken to avoid generating NaNs when they are not deserved.
For example, mathematically we expect that
cimag(cexp(x + I*0))
= 0 regardless of the value of
x,
and
cexp()
preserves this identity even if
x
is ∞ or NaN.
Likewise,
cexp(-∞ + I*y)
= 0 and
creal(cexp(∞ + I*y))
= ∞
for any
y
(even though the latter property is only mathematically true for
representable
y, .)
If
y
is not finite, the sign of the result is indeterminate.