Trait ark_poly::evaluations::multivariate::multilinear::MultilinearExtension [−][src]
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
fn num_vars(&self) -> usize
[src]
Returns the number of variables in self
fn evaluate(&self, point: &[F]) -> Option<F>
[src]
Evaluates self
at the given the vector point
in slice.
If the number of variables does not match, return None
.
fn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self
[src]
Outputs an l
-variate multilinear extension where value of evaluations are sampled uniformly at random.
fn relabel(&self, a: usize, b: usize, k: usize) -> Self
[src]
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]
Reduce the number of variables of self
by fixing the partial_point.len()
variables at partial_point
.
fn to_evaluations(&self) -> Vec<F>
[src]
Returns a list of evaluations over the domain, which is the boolean hypercube.
Implementors
impl<F: Field> MultilinearExtension<F> for DenseMultilinearExtension<F>
[src]
fn num_vars(&self) -> usize
[src]
fn evaluate(&self, point: &[F]) -> Option<F>
[src]
fn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self
[src]
fn relabel(&self, a: usize, b: usize, k: usize) -> Self
[src]
fn fix_variables(&self, partial_point: &[F]) -> Self
[src]
fn to_evaluations(&self) -> Vec<F>
[src]
impl<F: Field> MultilinearExtension<F> for SparseMultilinearExtension<F>
[src]
fn num_vars(&self) -> usize
[src]
fn evaluate(&self, point: &[F]) -> Option<F>
[src]
fn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self
[src]
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.