use crate::natural::Natural;
use crate::natural_polynomial::NaturalPolynomial;
use alloc::vec::Vec;
use malachite_base::num::arithmetic::traits::PowerOf2;
use malachite_base::num::basic::unsigneds::PrimitiveUnsigned;
use malachite_base::num::conversion::traits::ExactFrom;
use malachite_base::polynomial::Polynomial;
pub fn shl_naive<T: PrimitiveUnsigned>(p: &NaturalPolynomial, bits: T) -> NaturalPolynomial
where
u64: ExactFrom<T>,
{
let factor = Natural::power_of_2(u64::exact_from(bits));
NaturalPolynomial::from_coefficients_asc(
(0..p.len())
.map(|i| p.coefficient(i) * &factor)
.collect::<Vec<Natural>>(),
)
}