use crate::natural::Natural;
use crate::natural_polynomial::NaturalPolynomial;
use malachite_base::num::basic::unsigneds::PrimitiveUnsigned;
use malachite_base::polynomial::{EqTruncated, slices_eq_truncated};
use malachite_base::unsigned_polynomial::UnsignedPolynomial;
fn natural_is_zero(x: &Natural) -> bool {
*x == 0u32
}
impl EqTruncated for NaturalPolynomial {
#[inline]
fn eq_truncated(&self, other: &Self, len: u64) -> bool {
slices_eq_truncated(
&self.coefficients,
&other.coefficients,
len,
natural_is_zero,
|y| *y == 0u32,
|x, y| x == y,
)
}
}
impl<T: PrimitiveUnsigned> EqTruncated<UnsignedPolynomial<T>> for NaturalPolynomial
where
Natural: PartialEq<T>,
{
#[inline]
fn eq_truncated(&self, other: &UnsignedPolynomial<T>, len: u64) -> bool {
slices_eq_truncated(
&self.coefficients,
other.coefficients_asc(),
len,
natural_is_zero,
|&y| y == T::ZERO,
|x, y| x == y,
)
}
}
impl<T: PrimitiveUnsigned> EqTruncated<NaturalPolynomial> for UnsignedPolynomial<T>
where
Natural: PartialEq<T>,
{
#[inline]
fn eq_truncated(&self, other: &NaturalPolynomial, len: u64) -> bool {
other.eq_truncated(self, len)
}
}