use crate::gaussian_integer::GaussianInteger;
use crate::integer::Integer;
use malachite_base::num::arithmetic::traits::AbsSquared;
use malachite_base::num::comparison::traits::{EqAbs, PartialOrdAbs};
impl EqAbs<Integer> for GaussianInteger {
fn eq_abs(&self, other: &Integer) -> bool {
if self.imaginary == 0u32 {
self.real.eq_abs(other)
} else if self.real == 0u32 {
self.imaginary.eq_abs(other)
} else {
self.real.lt_abs(other)
&& self.imaginary.lt_abs(other)
&& self.abs_squared() == other.abs_squared()
}
}
}
impl EqAbs<GaussianInteger> for Integer {
#[inline]
fn eq_abs(&self, other: &GaussianInteger) -> bool {
other.eq_abs(self)
}
}