Enum ark_poly::domain::general::GeneralEvaluationDomain [−][src]
pub enum GeneralEvaluationDomain<F: FftField> { Radix2(Radix2EvaluationDomain<F>), MixedRadix(MixedRadixEvaluationDomain<F>), }
Expand description
Defines a domain over which finite field (I)FFTs can be performed. Generally tries to build a radix-2 domain and falls back to a mixed-radix domain if the radix-2 multiplicative subgroup is too small.
Variants
Radix2(Radix2EvaluationDomain<F>)
Radix-2 domain
MixedRadix(MixedRadixEvaluationDomain<F>)
Mixed-radix domain
Trait Implementations
Reads Self
from reader
.
Reads Self
from reader
without compression.
Reads self
from reader
without compression, and without performing
validity checks. Should be used only when the input is trusted. Read more
Serializes self
into writer
.
It is left up to a particular type for how it strikes the
serialization efficiency vs compression tradeoff.
For standard types (e.g. bool
, lengths, etc.) typically an uncompressed
form is used, whereas for algebraic types compressed forms are used. Read more
Serializes self
into writer
without compression.
Serializes self
into writer
without compression, and without
performing validity checks. Should be used only when there is no
danger of adversarial manipulation of the output. Read more
Construct a domain that is large enough for evaluations of a polynomial
having num_coeffs
coefficients.
If the field specifies a small subgroup for a mixed-radix FFT and the radix-2 FFT cannot be constructed, this method tries constructing a mixed-radix FFT instead.
fn elements(&self) -> GeneralElements<F>ⓘNotable traits for GeneralElements<F>
impl<F: FftField> Iterator for GeneralElements<F> type Item = F;
[src]
fn elements(&self) -> GeneralElements<F>ⓘNotable traits for GeneralElements<F>
impl<F: FftField> Iterator for GeneralElements<F> type Item = F;
[src]Return an iterator over the elements of the domain.
type Elements = GeneralElements<F>
type Elements = GeneralElements<F>
The type of the elements iterator.
Return the size of a domain that is large enough for evaluations of a
polynomial having num_coeffs
coefficients. Read more
Compute a FFT, modifying the vector in place.
Compute a IFFT, modifying the vector in place.
Compute a FFT over a coset of the domain, modifying the input vector in place. Read more
Compute a IFFT over a coset of the domain, modifying the input vector in place. Read more
Evaluate all the lagrange polynomials defined by this domain at the
point tau
. This is computed in time O(|domain|).
Then given the evaluations of a degree d polynomial P over this domain,
where d < |domain|, P(tau)
can be computed as
P(tau) = sum_{i in [|Domain|]} L_{i, Domain}(tau) * P(g^i)
.
L_{i, Domain}
is the value of the i-th lagrange coefficient
in the returned vector. Read more
Return the sparse vanishing polynomial.
This evaluates the vanishing polynomial for this domain at tau.
Sample an element that is not in the domain.
Return the size of self
as a field element.
Compute a FFT.
Compute a IFFT.
Multiply the i
-th element of coeffs
with g^i
.
Multiply the i
-th element of coeffs
with c*g^i
.
Compute a FFT over a coset of the domain.
Compute a IFFT over a coset of the domain.
The target polynomial is the zero polynomial in our evaluation domain, so we must perform division over a coset. Read more
Given an index which assumes the first elements of this domain are the elements of another (sub)domain, this returns the actual index into this domain. Read more
#[must_use]fn mul_polynomials_in_evaluation_domain(
&self,
self_evals: &[F],
other_evals: &[F]
) -> Vec<F>
[src]
#[must_use]fn mul_polynomials_in_evaluation_domain(
&self,
self_evals: &[F],
other_evals: &[F]
) -> Vec<F>
[src]Perform O(n) multiplication of two polynomials that are presented by their evaluations in the domain. Returns the evaluations of the product over the domain. Read more
impl<F: PartialEq + FftField> PartialEq<GeneralEvaluationDomain<F>> for GeneralEvaluationDomain<F>
[src]
impl<F: PartialEq + FftField> PartialEq<GeneralEvaluationDomain<F>> for GeneralEvaluationDomain<F>
[src]This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl<F> Send for GeneralEvaluationDomain<F>
impl<F> Sync for GeneralEvaluationDomain<F>
impl<F> Unpin for GeneralEvaluationDomain<F> where
F: Unpin,
Blanket Implementations
Mutably borrows from an owned value. Read more
pub default fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64 where
B: BuildHasher,
H: Hash + ?Sized,
fn hash_uncompressed<H>(&self) -> GenericArray<u8, <H as Digest>::OutputSize> where
H: Digest,
[src]type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V