pub fn tensor_prod_eq_ind<P: PackedField>(
    log_n_values: usize,
    packed_values: &mut [P],
    extra_query_coordinates: &[P::Scalar]
) -> Result<(), Error>
Expand description

Tensor Product expansion of values with partial eq indicator evaluated at extra_query_coordinates

Let $n$ be log_n_values, $p$, $k$ be the lengths of packed_values and extra_query_coordinates. Requires * $n \geq k$ * p = max(1, 2^{n+k} / P::WIDTH) Let $v$ be a vector corresponding to the first $2^n$ scalar values of values. Let $r = (r_0, \ldots, r_{k-1})$ be the vector of extra_query_coordinates.

§Formal Definition

values is updated to contain the result of: $v \otimes (1 - r_0, r_0) \otimes \ldots \otimes (1 - r_{k-1}, r_{k-1})$ which is now a vector of length $2^{n+k}$. If 2^{n+k} < P::WIDTH, then the result is packed into a single element of values where only the first 2^{n+k} elements have meaning.

§Interpretation

Let $f$ be an $n$ variate multilinear polynomial that has evaluations over the $n$ dimensional hypercube corresponding to $v$. Then values is updated to contain the evaluations of $g$ over the $n+k$-dimensional hypercube where

  • $g(x_0, \ldots, x_{n+k-1}) = f(x_0, \ldots, x_{n-1}) * eq(x_n, \ldots, x_{n+k-1}, r)$