pub fn merge(polys: &[DenseMultilinearPolynomial<F>]) -> DenseMultilinearPolynomial<F> {
        // TODO (performance): pre-allocate vector to avoid repeated resizing.
        let mut z: Vec<FieldElement<F>> = Vec::new();
        for poly in polys {
            z.extend(poly.evals.iter().cloned());
        }
        z.resize(z.len().next_power_of_two(), FieldElement::zero());
        DenseMultilinearPolynomial::new(z)
    }
Merges a series of DenseMultilinearPolynomials into one polynomial.
Zero-pads the final merged polynomial to the next power-of-two length if necessary.
crates/math/src/polynomial/dense_multilinear_poly.rs