Expand description
Stores a multilinear polynomial in dense evaluation form.
Fields
evaluations: Vec<F>The evaluation over {0,1}^num_vars
num_vars: usizeNumber of variables
Implementations
sourceimpl<F: Field> DenseMultilinearExtension<F>
impl<F: Field> DenseMultilinearExtension<F>
sourcepub fn from_evaluations_slice(num_vars: usize, evaluations: &[F]) -> Self
pub fn from_evaluations_slice(num_vars: usize, evaluations: &[F]) -> Self
Construct a new polynomial from a list of evaluations where the index
represents a point in {0,1}^num_vars in little endian form. For
example, 0b1011 represents P(1,1,0,1)
sourcepub fn from_evaluations_vec(num_vars: usize, evaluations: Vec<F>) -> Self
pub fn from_evaluations_vec(num_vars: usize, evaluations: Vec<F>) -> Self
Construct a new polynomial from a list of evaluations where the index
represents a point in {0,1}^num_vars in little endian form. For
example, 0b1011 represents P(1,1,0,1)
sourcepub fn relabel_in_place(&mut self, a: usize, b: usize, k: usize)
pub fn relabel_in_place(&mut self, a: usize, b: usize, k: usize)
Relabel the point in place by switching k scalars from position a to
position b, and from position b to position a 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)
Trait Implementations
sourceimpl<'a, 'b, F: Field> Add<&'a DenseMultilinearExtension<F>> for &'b DenseMultilinearExtension<F>
impl<'a, 'b, F: Field> Add<&'a DenseMultilinearExtension<F>> for &'b DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
+ operator.sourcefn add(self, rhs: &'a DenseMultilinearExtension<F>) -> Self::Output
fn add(self, rhs: &'a DenseMultilinearExtension<F>) -> Self::Output
+ operation. Read moresourceimpl<F: Field> Add<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<F: Field> Add<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
+ operator.sourcefn add(self, other: DenseMultilinearExtension<F>) -> Self
fn add(self, other: DenseMultilinearExtension<F>) -> Self
+ operation. Read moresourceimpl<'a, F: Field> AddAssign<&'a DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<'a, F: Field> AddAssign<&'a DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
sourcefn add_assign(&mut self, other: &'a DenseMultilinearExtension<F>)
fn add_assign(&mut self, other: &'a DenseMultilinearExtension<F>)
+= operation. Read moresourceimpl<'a, F: Field> AddAssign<(F, &'a DenseMultilinearExtension<F>)> for DenseMultilinearExtension<F>
impl<'a, F: Field> AddAssign<(F, &'a DenseMultilinearExtension<F>)> for DenseMultilinearExtension<F>
sourcefn add_assign(&mut self, (f, other): (F, &'a DenseMultilinearExtension<F>))
fn add_assign(&mut self, (f, other): (F, &'a DenseMultilinearExtension<F>))
+= operation. Read moresourceimpl<F: Field> AddAssign<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<F: Field> AddAssign<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
sourcefn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moresourceimpl<F: Field> CanonicalDeserialize for DenseMultilinearExtension<F>
impl<F: Field> CanonicalDeserialize for DenseMultilinearExtension<F>
sourcefn deserialize_with_mode<R: Read>(
reader: R,
compress: Compress,
validate: Validate
) -> Result<Self, SerializationError>
fn deserialize_with_mode<R: Read>(
reader: R,
compress: Compress,
validate: Validate
) -> Result<Self, SerializationError>
fn deserialize_compressed<R>(reader: R) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_compressed_unchecked<R>(
reader: R
) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_uncompressed<R>(reader: R) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_uncompressed_unchecked<R>(
reader: R
) -> Result<Self, SerializationError>where
R: Read,
sourceimpl<F: Field> CanonicalSerialize for DenseMultilinearExtension<F>
impl<F: Field> CanonicalSerialize for DenseMultilinearExtension<F>
sourcefn serialize_with_mode<W: Write>(
&self,
writer: W,
compress: Compress
) -> Result<(), SerializationError>
fn serialize_with_mode<W: Write>(
&self,
writer: W,
compress: Compress
) -> Result<(), SerializationError>
fn serialized_size(&self, compress: Compress) -> usize
fn serialize_compressed<W>(&self, writer: W) -> Result<(), SerializationError>where
W: Write,
fn compressed_size(&self) -> usize
fn serialize_uncompressed<W>(&self, writer: W) -> Result<(), SerializationError>where
W: Write,
fn uncompressed_size(&self) -> usize
sourceimpl<F: Clone + Field> Clone for DenseMultilinearExtension<F>
impl<F: Clone + Field> Clone for DenseMultilinearExtension<F>
sourcefn clone(&self) -> DenseMultilinearExtension<F>
fn clone(&self) -> DenseMultilinearExtension<F>
1.0.0 · sourceconst fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source. Read moresourceimpl<F: Field> Debug for DenseMultilinearExtension<F>
impl<F: Field> Debug for DenseMultilinearExtension<F>
sourceimpl<F: Default + Field> Default for DenseMultilinearExtension<F>
impl<F: Default + Field> Default for DenseMultilinearExtension<F>
sourcefn default() -> DenseMultilinearExtension<F>
fn default() -> DenseMultilinearExtension<F>
sourceimpl<F: Hash + Field> Hash for DenseMultilinearExtension<F>
impl<F: Hash + Field> Hash for DenseMultilinearExtension<F>
sourceimpl<F: Field> Index<usize> for DenseMultilinearExtension<F>
impl<F: Field> Index<usize> for DenseMultilinearExtension<F>
sourcefn index(&self, index: usize) -> &Self::Output
fn index(&self, index: usize) -> &Self::Output
Returns the evaluation of the polynomial at a point represented by index.
Index represents a vector in {0,1}^num_vars in little endian form. For
example, 0b1011 represents P(1,1,0,1)
For dense multilinear polynomial, index takes constant time.
type Output = F
type Output = F
sourceimpl<F: Field> MultilinearExtension<F> for DenseMultilinearExtension<F>
impl<F: Field> MultilinearExtension<F> for DenseMultilinearExtension<F>
sourcefn evaluate(&self, point: &[F]) -> Option<F>
fn evaluate(&self, point: &[F]) -> Option<F>
self at the given the vector point in slice.
If the number of variables does not match, return None. Read moresourcefn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self
fn rand<R: Rng>(num_vars: usize, rng: &mut R) -> Self
l-variate multilinear extension where value of evaluations
are sampled uniformly at random. Read moresourcefn relabel(&self, a: usize, b: usize, k: usize) -> Self
fn relabel(&self, a: usize, b: usize, k: usize) -> Self
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. Read moresourcefn fix_variables(&self, partial_point: &[F]) -> Self
fn fix_variables(&self, partial_point: &[F]) -> Self
self by fixing the
partial_point.len() variables at partial_point. Read moresourcefn to_evaluations(&self) -> Vec<F>
fn to_evaluations(&self) -> Vec<F>
sourceimpl<F: Field> Neg for DenseMultilinearExtension<F>
impl<F: Field> Neg for DenseMultilinearExtension<F>
sourceimpl<F: PartialEq + Field> PartialEq<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<F: PartialEq + Field> PartialEq<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
sourcefn eq(&self, other: &DenseMultilinearExtension<F>) -> bool
fn eq(&self, other: &DenseMultilinearExtension<F>) -> bool
sourceimpl<'a, 'b, F: Field> Sub<&'a DenseMultilinearExtension<F>> for &'b DenseMultilinearExtension<F>
impl<'a, 'b, F: Field> Sub<&'a DenseMultilinearExtension<F>> for &'b DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
- operator.sourcefn sub(self, rhs: &'a DenseMultilinearExtension<F>) -> Self::Output
fn sub(self, rhs: &'a DenseMultilinearExtension<F>) -> Self::Output
- operation. Read moresourceimpl<F: Field> Sub<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<F: Field> Sub<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
type Output = DenseMultilinearExtension<F>
- operator.sourcefn sub(self, other: DenseMultilinearExtension<F>) -> Self
fn sub(self, other: DenseMultilinearExtension<F>) -> Self
- operation. Read moresourceimpl<'a, F: Field> SubAssign<&'a DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<'a, F: Field> SubAssign<&'a DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
sourcefn sub_assign(&mut self, other: &'a DenseMultilinearExtension<F>)
fn sub_assign(&mut self, other: &'a DenseMultilinearExtension<F>)
-= operation. Read moresourceimpl<F: Field> SubAssign<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
impl<F: Field> SubAssign<DenseMultilinearExtension<F>> for DenseMultilinearExtension<F>
sourcefn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read more