pub fn tensor_prod_eq_ind<Cube: Hypercube, P: PackedField>(
values: FieldBuffer<P, Vec<P>>,
extra_query_coordinates: &[P::Scalar],
) -> FieldBuffer<P, Vec<P>>Expand description
Tensor of values with the equality indicator evaluated at extra coordinates.
Take n values and the k coordinates r = (r_0, ..., r_{k-1}).
The result is the tensor product of those values with the basis at every coordinate:
v (x) b(r_0) (x) ... (x) b(r_{k-1})It holds 2^(n + k) coefficients, one variable added per coordinate.
Read as polynomials, the input holds an n-variate multilinear f.
The output then holds the (n + k)-variate multilinear
g(X_0, ..., X_{n+k-1}) = f(X_0, ..., X_{n-1}) * eq(X_n, ..., X_{n+k-1}, r)Appending the coordinate r doubles the length, turning every value v into a pair:
before [ v_0 v_1 ]
after [ v_0 * b_0(r) v_1 * b_0(r) | v_0 * b_1(r) v_1 * b_1(r) ]The two halves sit one after the other, so the appended variable is the highest indexed one.