use crate::integer::Integer;
use crate::integer_polynomial::IntegerPolynomial;
use alloc::vec;
use alloc::vec::Vec;
use malachite_base::num::basic::traits::Zero;
use malachite_base::polynomial::Polynomial;
pub fn compose_power_of_x_naive(p: &IntegerPolynomial, k: u64) -> IntegerPolynomial {
if k == 0 {
let sum = (0..p.len())
.map(|i| p.coefficient(i).clone())
.sum::<Integer>();
return IntegerPolynomial::from_coefficients_asc(vec![sum]);
}
if p.len() == 0 {
return IntegerPolynomial::ZERO;
}
IntegerPolynomial::from_coefficients_asc(
(0..=(p.len() - 1) * k)
.map(|i| {
if i % k == 0 {
p.coefficient(i / k).clone()
} else {
Integer::ZERO
}
})
.collect::<Vec<Integer>>(),
)
}