Struct FFTree

Source
pub struct FFTree<F: Field> {
Show 13 fields pub f: BinaryTree<F>, pub recombine_matrices: BinaryTree<Mat2x2<F>>, pub decompose_matrices: BinaryTree<Mat2x2<F>>, pub rational_maps: Vec<RationalMap<F>>, pub subtree: Option<Box<Self>>, pub xnn_s: Vec<F>, pub xnn_s_inv: Vec<F>, pub z0_s1: Vec<F>, pub z1_s0: Vec<F>, pub z0_inv_s1: Vec<F>, pub z1_inv_s0: Vec<F>, pub z0z0_rem_xnn_s: Vec<F>, pub z1z1_rem_xnn_s: Vec<F>,
}

Fields§

§f: BinaryTree<F>§recombine_matrices: BinaryTree<Mat2x2<F>>§decompose_matrices: BinaryTree<Mat2x2<F>>§rational_maps: Vec<RationalMap<F>>§subtree: Option<Box<Self>>§xnn_s: Vec<F>§xnn_s_inv: Vec<F>§z0_s1: Vec<F>§z1_s0: Vec<F>§z0_inv_s1: Vec<F>§z1_inv_s0: Vec<F>§z0z0_rem_xnn_s: Vec<F>§z1z1_rem_xnn_s: Vec<F>

Implementations§

Source§

impl<F: Field> FFTree<F>

Source

pub fn new(leaves: Vec<F>, rational_maps: Vec<RationalMap<F>>) -> Self

Source

pub fn extend(&self, evals: &[F], moiety: Moiety) -> Vec<F>

Extends evals on the chosen moiety

Source

pub fn mextend(&self, evals: &[F], moiety: Moiety) -> Vec<F>

Extends special monic polynomials

Source

pub fn enter(&self, coeffs: &[F]) -> Vec<F>

Converts from coefficient to evaluation representation of a polynomial

Source

pub fn degree(&self, evals: &[F]) -> usize

Evaluates the degree of an evaluation table in O(n log n)

Source

pub fn exit_impl(&self, evals: &[F]) -> Vec<F>

Source

pub fn exit(&self, evals: &[F]) -> Vec<F>

Converts from evaluation to coefficient representation of a polynomial

Source

pub fn redc_z0(&self, evals: &[F], a: &[F]) -> Vec<F>

Computes <P(X)*Z_0(x)^(-1) mod a ≀ S> Z_0 is the vanishing polynomial of S_0 a must be a polynomial of max degree n/2 having no zeroes in S_0

Source

pub fn redc_z1(&self, evals: &[F], a: &[F]) -> Vec<F>

Computes <P(X)*Z_1(x)^(-1) mod A ≀ S> Z_1 is the vanishing polynomial of S_1 A must be a polynomial of max degree n/2 having no zeroes in S_1

Source

pub fn modular_reduce(&self, evals: &[F], a: &[F], c: &[F]) -> Vec<F>

Computes MOD algorithm a must be a polynomial of max degree n/2 having no zeroes in S_0 c must be the evaluation table <Z_0^2 mod a ≀ S>

Source

pub fn vanish(&self, vanish_domain: &[F]) -> Vec<F>

Returns an evaluation of the vanishing polynomial Z(x) = ∏ (x - a_i) Runtime O(n log^2 n). vanishi_domain = [a_0, a_1, ..., a_(n - 1)] Section 7.1 https://arxiv.org/pdf/2107.08473.pdf

Source

pub fn subtree_with_size(&self, n: usize) -> &Self

Returns a FFTree with n leaves

Trait Implementations§

Source§

impl<F: Field> CanonicalDeserialize for FFTree<F>

Source§

fn deserialize_with_mode<R: Read>( reader: R, compress: Compress, validate: Validate, ) -> Result<Self, SerializationError>

The general deserialize method that takes in customization flags.
Source§

fn deserialize_compressed<R>(reader: R) -> Result<Self, SerializationError>
where R: Read,

Source§

fn deserialize_compressed_unchecked<R>( reader: R, ) -> Result<Self, SerializationError>
where R: Read,

Source§

fn deserialize_uncompressed<R>(reader: R) -> Result<Self, SerializationError>
where R: Read,

Source§

fn deserialize_uncompressed_unchecked<R>( reader: R, ) -> Result<Self, SerializationError>
where R: Read,

Source§

impl<F: Field> CanonicalSerialize for FFTree<F>

Source§

fn serialize_with_mode<W: Write>( &self, writer: W, compress: Compress, ) -> Result<(), SerializationError>

The general serialize method that takes in customization flags.
Source§

fn serialized_size(&self, compress: Compress) -> usize

Source§

fn serialize_compressed<W>(&self, writer: W) -> Result<(), SerializationError>
where W: Write,

Source§

fn compressed_size(&self) -> usize

Source§

fn serialize_uncompressed<W>(&self, writer: W) -> Result<(), SerializationError>
where W: Write,

Source§

fn uncompressed_size(&self) -> usize

Source§

impl<F: Clone + Field> Clone for FFTree<F>

Source§

fn clone(&self) -> FFTree<F>

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<F: Debug + Field> Debug for FFTree<F>

Source§

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

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

impl<F: Field> Valid for FFTree<F>

Source§

fn check(&self) -> Result<(), SerializationError>

Source§

fn batch_check<'a>( batch: impl Iterator<Item = &'a Self> + Send, ) -> Result<(), SerializationError>
where Self: 'a,

Auto Trait Implementations§

§

impl<F> Freeze for FFTree<F>

§

impl<F> RefUnwindSafe for FFTree<F>
where F: RefUnwindSafe,

§

impl<F> Send for FFTree<F>

§

impl<F> Sync for FFTree<F>

§

impl<F> Unpin for FFTree<F>
where F: Unpin,

§

impl<F> UnwindSafe for FFTree<F>
where F: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CanonicalSerializeHashExt for T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V