use crate::integer::Integer;
use crate::integer_polynomial::IntegerPolynomial;
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: &IntegerPolynomial, bits: T) -> IntegerPolynomial
where
u64: ExactFrom<T>,
{
let factor = Integer::power_of_2(u64::exact_from(bits));
IntegerPolynomial::from_coefficients_asc(
(0..p.len())
.map(|i| p.coefficient(i) * &factor)
.collect::<Vec<Integer>>(),
)
}