4.4 Complex comparison operators
Complex numbers are equal if and only if both their real and imaginary components are equal. That is, the conditional
z1 == z2
is equivalent to
get_real(z1) == get_real(z2) && get_imag(z1) == get_imag(z2)
As with other complex functions, if one of the arguments is of type
real
or int
, it will be promoted to type complex
before
comparison. For example, if z
is of type complex
, then z == 0
will be true if z
has real component equal to 0.0 and complex
component equal to 0.0.
Warning: As with real values, it is usually a mistake to compare complex numbers for equality because their parts are implemented using floating-point arithmetic, which suffers from precision errors, rendering algebraically equivalent expressions not equal after evaluation.
int
operator==
(complex x, complex y)
Return 1 if x is equal to y and 0 otherwise,
\[
(x \,\text{==}\, y)
\ = \ \text{operator==}(x,y)
\ = \ \begin{cases} 1 & \text{if $x = y$}, \ \text{and} \\ 0 & \text{otherwise.}
\end{cases}
\]
Available since 2.28
int
operator!=
(complex x, complex y)
Return 1 if x is not equal to y and 0 otherwise,
\[
(x \,\text{!=}\, y)
\ = \ \text{operator!=}(x,y)
\ = \ \begin{cases} 1 & \text{if $x \neq y$}, \ \text{and} \\ 0 &
\text{otherwise.} \end{cases}
\]
Available since 2.28