sonobe/folding-schemes/src/utils/mod.rs
folding-schemes/src/utils/mod.rsRaw
1use ark_ff::PrimeField;
2
3pub mod gadgets;
4pub mod hypercube;
5pub mod lagrange_poly;
6pub mod mle;
7pub mod vec;
8
9// expose espresso local modules
10pub mod espresso;
11pub use crate::utils::espresso::multilinear_polynomial;
12pub use crate::utils::espresso::sum_check;
13pub use crate::utils::espresso::virtual_polynomial;
14
15/// For a given x, returns [1, x^1, x^2, ..., x^n-1];
16pub fn powers_of<F: PrimeField>(x: F, n: usize) -> Vec<F> {
17 let mut c: Vec<F> = vec![F::zero(); n];
18 c[0] = F::one();
19 for i in 1..n {
20 c[i] = c[i - 1] * x;
21 }
22 c
23}