The PCS supports opening all traces at any number of points. In practice, we only want to open at z and gz. If we change the interface to restrict the PCS to this particular situation, we can avoid a bit of extra work when computing the barycentric weights. Once we have the denominators x_i / (z - x_i) over the LDE coset, we should be able to derive those for g z using a multiplication and reordering. Since g = x_1 we have
$$
\frac{x_i}{ x_1 z - x_i} = x_1 \cdot \frac{x_{i-1}}{ z - x_{i-1}}
$$
This avoids the second batch multiplicative inversion that we would have otherwise had to do if z_2 was arbitrary.
Ported from 0xMiden/p3-miden#47
The PCS supports opening all traces at any number of points. In practice, we only want to open at
zandgz. If we change the interface to restrict the PCS to this particular situation, we can avoid a bit of extra work when computing the barycentric weights. Once we have the denominatorsx_i / (z - x_i)over the LDE coset, we should be able to derive those forg zusing a multiplication and reordering. Sinceg = x_1we haveThis avoids the second batch multiplicative inversion that we would have otherwise had to do if
z_2was arbitrary.Ported from 0xMiden/p3-miden#47