arnaucube
arnaucube/shockwave-plusPublic Self-hosted repository
shockwave-plus/tensor_pcs/src/rs_config/naive.rs
tensor_pcs/src/rs_config/naive.rsRaw
 1use crate::FieldExt;
 2
 3pub fn gen_config<F: FieldExt>(num_cols: usize) -> Vec<Vec<F>> {
 4    assert!(num_cols.is_power_of_two());
 5    let expansion_factor = 2;
 6    let codeword_len = num_cols * expansion_factor;
 7    let domain = (0..codeword_len)
 8        .map(|i| F::from((i + 3) as u64))
 9        .collect::<Vec<F>>();
10
11    let mut domain_powers = Vec::with_capacity(codeword_len);
12    for eval_at in domain {
13        let mut powers_i = vec![F::ONE];
14        for j in 0..(num_cols - 1) {
15            powers_i.push(powers_i[j] * eval_at);
16        }
17        domain_powers.push(powers_i);
18    }
19
20    domain_powers
21}