Trait EvaluationDomainFactory

Source
pub trait EvaluationDomainFactory<DomainField: Field>: Clone + Sync {
    // Required method
    fn create(
        &self,
        size: usize,
    ) -> Result<EvaluationDomain<DomainField>, Error>;
}
Expand description

Wraps type information to enable instantiating EvaluationDomains.

Required Methods§

Source

fn create(&self, size: usize) -> Result<EvaluationDomain<DomainField>, Error>

Instantiates an EvaluationDomain of size points from $K \mathbin{/} \mathbb{F}_2 \cup \infty$ where $K$ is a finite extension of degree $d$. For size >= 3, the first size - 1 domain points are a “lexicographic prefix” of the binary subspace defined by the $\mathbb{F}_2$-basis $\beta_0,\ldots ,\beta_{d-1}$. The additional assumption $\beta_0 = 1$ means that first two points of the basis are always 0 and 1 of the field $K$. The last point of the domain is Karatsuba “infinity” (denoted $\infty$), which is the coefficient of the highest power in the interpolated polynomial (see the “Evaluation” section of the Wikipedia article on Toom-Cook multiplication for an introduction).

“Infinity” point is not included when size <= 2.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a, DomainField: Field, T: 'a + EvaluationDomainFactory<DomainField> + ?Sized> EvaluationDomainFactory<DomainField> for &'a T
where &'a T: Clone + Sync,

Source§

fn create(&self, size: usize) -> Result<EvaluationDomain<DomainField>, Error>

Implementors§