binius_math

Type Alias MultilinearExtensionBorrowed

Source
pub type MultilinearExtensionBorrowed<'a, P> = MultilinearExtension<P, &'a [P]>;
Expand description

Type alias for the common pattern of a MultilinearExtension backed by borrowed data.

Aliased Type§

struct MultilinearExtensionBorrowed<'a, P> { /* private fields */ }

Implementations

Source§

impl<F: Field + AsSinglePacked, Data: Deref<Target = [F]>> MultilinearExtension<F, Data>

Source

pub fn to_single_packed(self) -> MultilinearExtension<F::Packed>

Convert MultilinearExtension over a scalar to a MultilinearExtension over a packed field with single element.

Source§

impl<'a, P: PackedField> MultilinearExtension<P, &'a [P]>

Source

pub fn from_values_slice(v: &'a [P]) -> Result<Self, Error>

Source§

impl<P, Data> MultilinearExtension<P, Data>
where P: PackedField, Data: Deref<Target = [P]>,

Source

pub fn specialize<PE>(self) -> MLEEmbeddingAdapter<P, PE, Data>

Source§

impl<'a, P, Data> MultilinearExtension<P, Data>
where P: PackedField, Data: Deref<Target = [P]> + Send + Sync + Debug + 'a,

Source

pub fn specialize_arc_dyn<PE>( self, ) -> Arc<dyn MultilinearPoly<PE> + Send + Sync + 'a>

Source§

impl<P: PackedField, Data: Deref<Target = [P]>> MultilinearExtension<P, Data>

Source

pub const fn n_vars(&self) -> usize

Source

pub const fn size(&self) -> usize

Source

pub fn evals(&self) -> &[P]

Source

pub fn to_ref(&self) -> MultilinearExtension<P, &[P]>

Source

pub fn packed_evaluate_on_hypercube(&self, index: usize) -> Result<P, Error>

Get the evaluations of the polynomial on a subcube of the hypercube of size equal to the packing width.

§Arguments
  • index - The index of the subcube
Source

pub fn evaluate_on_hypercube(&self, index: usize) -> Result<P::Scalar, Error>

Source§

impl<P, Data> MultilinearExtension<P, Data>
where P: PackedField, Data: Deref<Target = [P]> + Send + Sync,

Source

pub fn evaluate<'a, FE, PE>( &self, query: impl Into<MultilinearQueryRef<'a, PE>>, ) -> Result<FE, Error>
where FE: ExtensionField<P::Scalar>, PE: PackedField<Scalar = FE>,

Source

pub fn evaluate_partial_high<'a, PE>( &self, query: impl Into<MultilinearQueryRef<'a, PE>>, ) -> Result<MultilinearExtension<PE>, Error>

Partially evaluate the polynomial with assignment to the high-indexed variables.

The polynomial is multilinear with μ\mu variables, p(X0,,Xμ1)p(X_0, …, X_{\mu - 1}). Given a query vector of length kk representing (zμk+1,,zμ1)(z_{\mu - k + 1}, …, z_{\mu - 1}), this returns the multilinear polynomial with μk\mu - k variables, p(X0,,Xμk,zμk+1,,zμ1)p(X_0, …, X_{\mu - k}, z_{\mu - k + 1}, …, z_{\mu - 1}).

REQUIRES: the size of the resulting polynomial must have a length which is a multiple of PE::WIDTH, i.e. 2^(\mu - k) \geq PE::WIDTH, since WIDTH is power of two

Source

pub fn evaluate_partial_low<'a, PE>( &self, query: impl Into<MultilinearQueryRef<'a, PE>>, ) -> Result<MultilinearExtension<PE>, Error>

Partially evaluate the polynomial with assignment to the low-indexed variables.

The polynomial is multilinear with μ\mu variables, p(X0,,Xμ1p(X_0, …, X_{\mu-1}. Given a query vector of length kk representing (z0,,zk1)(z_0, …, z_{k-1}), this returns the multilinear polynomial with μk\mu - k variables, p(z0,,zk1,Xk,,Xμ1)p(z_0, …, z_{k-1}, X_k, …, X_{\mu - 1}).

REQUIRES: the size of the resulting polynomial must have a length which is a multiple of P::WIDTH, i.e. 2^(\mu - k) \geq P::WIDTH, since WIDTH is power of two

Source

pub fn evaluate_partial_low_into<PE>( &self, query: MultilinearQueryRef<'_, PE>, out: &mut [PE], ) -> Result<(), Error>

Partially evaluate the polynomial with assignment to the low-indexed variables.

The polynomial is multilinear with μ\mu variables, p(X0,,Xμ1p(X_0, …, X_{\mu-1}. Given a query vector of length kk representing (z0,,zk1)(z_0, …, z_{k-1}), this returns the multilinear polynomial with μk\mu - k variables, p(z0,,zk1,Xk,,Xμ1)p(z_0, …, z_{k-1}, X_k, …, X_{\mu - 1}).

REQUIRES: the size of the resulting polynomial must have a length which is a multiple of P::WIDTH, i.e. 2^(\mu - k) \geq P::WIDTH, since WIDTH is power of two

Source§

impl<P: PackedField, Data: Deref<Target = [P]>> MultilinearExtension<P, Data>

Source

pub fn from_values_generic(v: Data) -> Result<Self, Error>

Source

pub fn new(n_vars: usize, v: Data) -> Result<Self, Error>

Trait Implementations

Source§

impl<P: Clone + PackedField, Data: Clone + Deref<Target = [P]>> Clone for MultilinearExtension<P, Data>

Source§

fn clone(&self) -> MultilinearExtension<P, Data>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<P: Debug + PackedField, Data: Debug + Deref<Target = [P]>> Debug for MultilinearExtension<P, Data>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P: PartialEq + PackedField, Data: PartialEq + Deref<Target = [P]>> PartialEq for MultilinearExtension<P, Data>

Source§

fn eq(&self, other: &MultilinearExtension<P, Data>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<P: Eq + PackedField, Data: Eq + Deref<Target = [P]>> Eq for MultilinearExtension<P, Data>

Source§

impl<P: PackedField, Data: Deref<Target = [P]>> StructuralPartialEq for MultilinearExtension<P, Data>