Trait ark_poly::evaluations::multivariate::multilinear::MultilinearExtension [−][src]
pub trait MultilinearExtension<F: Field>: Sized + Clone + Debug + Hash + PartialEq + Eq + Add + Neg + Zero + CanonicalSerialize + CanonicalDeserialize + for<'a> AddAssign<&'a Self> + for<'a> AddAssign<(F, &'a Self)> + for<'a> SubAssign<&'a Self> + Index<usize> { fn num_vars(&self) -> usize; fn evaluate(&self, point: &[F]) -> Option<F>; fn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self; fn relabel(&self, a: usize, b: usize, k: usize) -> Self; fn fix_variables(&self, partial_point: &[F]) -> Self; fn to_evaluations(&self) -> Vec<F>; }
Expand description
This trait describes an interface for the multilinear extension
of an array.
The latter is a multilinear polynomial represented in terms of its evaluations over
the domain {0,1}^num_vars
(i.e. the Boolean hypercube).
Index represents a point, which is a vector in {0,1}^num_vars
in little endian form. For example, 0b1011
represents P(1,1,0,1)
Required methods
Evaluates self
at the given the vector point
in slice.
If the number of variables does not match, return None
.
Outputs an l
-variate multilinear extension where value of evaluations are sampled uniformly at random.
Relabel the point by swapping k
scalars from positions a..a+k
to positions b..b+k
,
and from position b..b+k
to position a..a+k
in vector.
This function turns P(x_1,...,x_a,...,x_{a+k - 1},...,x_b,...,x_{b+k - 1},...,x_n)
to P(x_1,...,x_b,...,x_{b+k - 1},...,x_a,...,x_{a+k - 1},...,x_n)
fn fix_variables(&self, partial_point: &[F]) -> Self
[src]
fn fix_variables(&self, partial_point: &[F]) -> Self
[src]Reduce the number of variables of self
by fixing the partial_point.len()
variables at partial_point
.
fn to_evaluations(&self) -> Vec<F>
[src]
fn to_evaluations(&self) -> Vec<F>
[src]Returns a list of evaluations over the domain, which is the boolean hypercube.
Implementors
Outputs an l
-variate multilinear extension where value of evaluations are sampled uniformly at random.
The number of nonzero entries is sqrt(2^num_vars)
and indices of those nonzero entries are distributed uniformly at random.