Struct ark_poly::evaluations::multivariate::multilinear::SparseMultilinearExtension[][src]

pub struct SparseMultilinearExtension<F: Field> {
    pub evaluations: BTreeMap<usize, F>,
    pub num_vars: usize,
    // some fields omitted
}

Stores a multilinear polynomial in sparse evaluation form.

Fields

evaluations: BTreeMap<usize, F>

tuples of index and value

num_vars: usize

number of variables

Implementations

impl<F: Field> SparseMultilinearExtension<F>[src]

pub fn from_evaluations<'a>(
    num_vars: usize,
    evaluations: impl IntoIterator<Item = &'a (usize, F)>
) -> Self
[src]

pub fn rand_with_config<R: Rng>(
    num_vars: usize,
    num_nonzero_entries: 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 num_nonzero_entries and indices of those nonzero entries are distributed uniformly at random.

Note that this function uses rejection sampling. As number of nonzero entries approach 2 ^ num_vars, sampling will be very slow due to large number of collisions.

pub fn to_dense_multilinear_extension(&self) -> DenseMultilinearExtension<F>[src]

Convert the sparse multilinear polynomial to dense form.

Trait Implementations

impl<'a, 'b, F: Field> Add<&'a SparseMultilinearExtension<F>> for &'b SparseMultilinearExtension<F>[src]

type Output = SparseMultilinearExtension<F>

The resulting type after applying the + operator.

impl<F: Field> Add<SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

type Output = SparseMultilinearExtension<F>

The resulting type after applying the + operator.

impl<'a, 'b, F: Field> AddAssign<&'a SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

impl<'a, 'b, F: Field> AddAssign<(F, &'a SparseMultilinearExtension<F>)> for SparseMultilinearExtension<F>[src]

impl<F: Field> AddAssign<SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

impl<F: Field> CanonicalDeserialize for SparseMultilinearExtension<F>[src]

impl<F: Field> CanonicalSerialize for SparseMultilinearExtension<F>[src]

impl<F: Clone + Field> Clone for SparseMultilinearExtension<F>[src]

impl<F: Field> Debug for SparseMultilinearExtension<F>[src]

impl<F: Default + Field> Default for SparseMultilinearExtension<F>[src]

impl<F: Eq + Field> Eq for SparseMultilinearExtension<F>[src]

impl<F: Hash + Field> Hash for SparseMultilinearExtension<F>[src]

impl<F: Field> Index<usize> for SparseMultilinearExtension<F>[src]

type Output = F

The returned type after indexing.

fn index(&self, index: usize) -> &Self::Output[src]

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 Sparse multilinear polynomial, Lookup_evaluation takes log time to the size of polynomial.

impl<F: Field> MultilinearExtension<F> for SparseMultilinearExtension<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.

impl<F: Field> Neg for SparseMultilinearExtension<F>[src]

type Output = SparseMultilinearExtension<F>

The resulting type after applying the - operator.

impl<F: PartialEq + Field> PartialEq<SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

impl<F: Field> StructuralEq for SparseMultilinearExtension<F>[src]

impl<F: Field> StructuralPartialEq for SparseMultilinearExtension<F>[src]

impl<'a, 'b, F: Field> Sub<&'a SparseMultilinearExtension<F>> for &'b SparseMultilinearExtension<F>[src]

type Output = SparseMultilinearExtension<F>

The resulting type after applying the - operator.

impl<F: Field> Sub<SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

type Output = SparseMultilinearExtension<F>

The resulting type after applying the - operator.

impl<'a, 'b, F: Field> SubAssign<&'a SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

impl<F: Field> SubAssign<SparseMultilinearExtension<F>> for SparseMultilinearExtension<F>[src]

impl<F: Field> Zero for SparseMultilinearExtension<F>[src]

Auto Trait Implementations

impl<F> Send for SparseMultilinearExtension<F>

impl<F> Sync for SparseMultilinearExtension<F>

impl<F> Unpin for SparseMultilinearExtension<F> where
    F: Unpin

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CallHasher for T where
    T: Hash + ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,