pub fn expand_subspace_evals<F, SEvals>(
    on_the_fly: &[OnTheFlyTwiddleAccess<F, SEvals>]
) -> Vec<PrecomputedTwiddleAccess<F>>
where F: BinaryField, SEvals: Deref<Target = [F]>,
Expand description

Given OnTheFlyTwiddleAccess instances for each NTT round, returns a vector of PrecomputedTwiddleAccess objects, one for each NTT round.

For each round $i$, the input contains the value of $\hat{W}_i$ on the basis $\beta_{i+1},\ldots ,\beta_{d-1}$. The ith element of the output contains the evaluations of $\hat{W}_i$ on the entire space $K/U_{i+1}$, where the order is the usual “binary counting order” in $\beta_{i+1},\ldots ,\beta_{d-1}$. While $\hat{W}_i$ is well-defined on $K/U_i$, we have the normalization $\hat{W}_{i}(\beta_i)=1$, hence to specify the function we need only specify it on $K/U_{i+1}$.