53 static Elt eval(
size_t logn, corner_t n,
const Elt I[],
54 const Elt J[],
const Field& F) {
55 Elt a = F.one(), b = F.one();
56 for (
size_t round = 0; round < logn; round++) {
57 Elt i1 = I[round], j1 = J[round];
58 Elt i0 = F.subf(F.one(), i1), j0 = F.subf(F.one(), j1);
59 Elt i0j0 = F.mulf(i0, j0);
60 Elt i1j1 = F.mulf(i1, j1);
63 F.add(b, F.mulf(a, i0j0));
67 F.mul(a, F.addf(i0j0, i1j1));