## Table of Contents

## Modules

### domain

This module contains different evaluation domains used for polynomial arithmetic, especially those friendly to fast Fourier transforms (FFTs).

##### GeneralEvaluationDomain

Contains the `GeneralEvaluationDomain`

for FFT-friendly fields.

##### mixed_radix

Contains the `MixedRadixEvaluationDomain`

for fields that do not have high-enough two-adicity for efficient FFTs.

##### radix2

Contains the `Radix2EvaluationDomain`

, an evaluation domain for fields with high two-adicity, supporting FFTs of size at most `2^F::TWO_ADICITY`

.

The `Radix2EvaluationDomain`

in the `ark-poly`

crate has several methods that allow for various operations on polynomial domains. Here is a list of the primary methods:

: Constructs a domain for a given number of coefficients.`new`

: Constructs a coset domain.`get_coset`

: Returns the size of a domain suitable for a given number of coefficients.`compute_size_of_domain`

: Returns the size of the domain.`size`

: Returns the base-2 logarithm of the domain size.`log_size_of_group`

: Returns the multiplicative inverse of the domain size as a field element.`size_inv`

: Returns the generator for the multiplicative subgroup.`group_gen`

: Returns the inverse of the subgroup generator.`group_gen_inv`

: Returns the coset offset.`coset_offset`

: Returns the inverse of the coset offset.`coset_offset_inv`

: Returns the coset offset raised to the power of the domain size.`coset_offset_pow_size`

: Computes a Fast Fourier Transform (FFT) in place.`fft_in_place`

: Computes an Inverse Fast Fourier Transform (IFFT) in place.`ifft_in_place`

: Samples an element outside the domain.`sample_element_outside_domain`

: Constructs a coset domain for a given number of coefficients and offset.`new_coset`

: Returns the size of the domain as a field element.`size_as_field_element`

: Computes a FFT.`fft`

: Computes an IFFT.`ifft`

: Multiplies the i-th element of coefficients with gig^igi.`distribute_powers`

: Multiplies the i-th element of coefficients with c×gic \times g^ic×gi.`distribute_powers_and_mul_by_const`

: Evaluates all Lagrange coefficients at a given point.`evaluate_all_lagrange_coefficients`

: Returns the vanishing polynomial.`vanishing_polynomial`

: Evaluates the vanishing polynomial at a given point.`evaluate_vanishing_polynomial`

: Returns the i-th element of the domain.`element`

: Reindexes an index by another subdomain.`reindex_by_subdomain`

: Multiplies two polynomials presented by their evaluations in the domain.`mul_polynomials_in_evaluation_domain`

### evaluations

This module provides data structures and functionalities for representing and working with polynomials in their evaluations form.

##### multivariate

Handles sparse multivariate polynomials.

##### univariate

Deals with univariate polynomials represented in evaluations form.

Methods in `Evaluations`

Struct (from `mod.rs`

):

- interpolate
- from_vec_and_domain
- evaluate_at
- evaluate_at_index
- scale
- scale_in_place
- coset_evaluate_and_return_poly
- into_coeffs
- ifft
- fft
- evaluate_over_domain_by_ref
- evaluate_over_domain
- mul_assign_by_ref
- add_assign_by_ref
- sub_assign_by_ref
- interpolate_with_domain
- coset_interpolate_and_return_poly

### polynomial

This module includes functions and structures for manipulating both univariate and multivariate polynomials.

##### multivariate

Focuses on sparse multivariate polynomials.

##### univariate

Deals with both sparse and dense univariate polynomials.