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 == z2is 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