use crate::natural::Natural;
use crate::natural_polynomial::NaturalPolynomial;
use core::cmp::Ordering;
use malachite_base::num::basic::traits::Zero;
use malachite_base::num::logic::traits::SignificantBits;
pub fn natural_polynomial_evaluate(p: &NaturalPolynomial, x: &Natural) -> Natural {
let mut sum = Natural::ZERO;
for c in p.coefficients_asc().iter().rev() {
sum *= x;
sum += c;
}
sum
}
pub fn natural_polynomial_cmp_evaluated(p: &NaturalPolynomial, q: &NaturalPolynomial) -> Ordering {
let bound = Natural::from(2u32)
<< p.coefficients_asc()
.iter()
.chain(q.coefficients_asc().iter())
.map(SignificantBits::significant_bits)
.max()
.unwrap_or(0);
natural_polynomial_evaluate(p, &bound).cmp(&natural_polynomial_evaluate(q, &bound))
}