#include <evaluation_domain.hpp>
Public Types | |
typedef FieldType | field_type |
Public Member Functions | |
virtual void | add_poly_z (const value_type &coeff, std::vector< value_type > &H)=0 |
virtual value_type | compute_vanishing_polynomial (const value_type &t)=0 |
virtual void | divide_by_z_on_coset (std::vector< value_type > &P)=0 |
virtual std::vector< value_type > | evaluate_all_lagrange_polynomials (const value_type &t)=0 |
evaluation_domain (const std::size_t m) | |
virtual void | fft (std::vector< value_type > &a)=0 |
virtual value_type | get_domain_element (const std::size_t idx)=0 |
virtual void | inverse_fft (std::vector< value_type > &a)=0 |
Public Attributes | |
value_type | domain |
value_type | domain_inverse |
value_type | generator |
value_type | generator_inverse |
std::size_t | generator_size |
std::size_t | log2_size |
std::size_t | m |
value_type | root |
value_type | root_inverse |
Detailed Description
template<typename FieldType>
class nil::crypto3::math::evaluation_domain< FieldType >
An evaluation domain.
Member Typedef Documentation
◆ field_type
typedef FieldType nil::crypto3::math::evaluation_domain< FieldType >::field_type |
Constructor & Destructor Documentation
◆ evaluation_domain()
|
inline |
Construct an evaluation domain S of size m, if possible.
(See the function get_evaluation_domain below.)
Member Function Documentation
◆ add_poly_z()
|
pure virtual |
Add the coefficients of the vanishing polynomial of S to the coefficients of the polynomial H.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ compute_vanishing_polynomial()
|
pure virtual |
Evaluate the vanishing polynomial of S at the field element t.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ divide_by_z_on_coset()
|
pure virtual |
Multiply by the evaluation, on a coset of S, of the inverse of the vanishing polynomial of S.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ evaluate_all_lagrange_polynomials()
|
pure virtual |
Evaluate all Lagrange polynomials.
The inputs are:
- an integer m
- an element t The output is a vector (b_{0},...,b_{m-1}) where b_{i} is the evaluation of L_{i,S}(z) at z = t.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ fft()
|
pure virtual |
Compute the FFT, over the domain S, of the vector a.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ get_domain_element()
|
pure virtual |
Get the idx-th element in S.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
◆ inverse_fft()
|
pure virtual |
Compute the inverse FFT, over the domain S, of the vector a.
Implemented in nil::crypto3::math::step_radix2_domain< FieldType >, nil::crypto3::math::geometric_sequence_domain< FieldType >, nil::crypto3::math::extended_radix2_domain< FieldType >, nil::crypto3::math::basic_radix2_domain< FieldType >, and nil::crypto3::math::arithmetic_sequence_domain< FieldType >.
Member Data Documentation
◆ domain
value_type nil::crypto3::math::evaluation_domain< FieldType >::domain |
◆ domain_inverse
value_type nil::crypto3::math::evaluation_domain< FieldType >::domain_inverse |
◆ generator
value_type nil::crypto3::math::evaluation_domain< FieldType >::generator |
◆ generator_inverse
value_type nil::crypto3::math::evaluation_domain< FieldType >::generator_inverse |
◆ generator_size
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::generator_size |
◆ log2_size
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::log2_size |
◆ m
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::m |
◆ root
value_type nil::crypto3::math::evaluation_domain< FieldType >::root |
◆ root_inverse
value_type nil::crypto3::math::evaluation_domain< FieldType >::root_inverse |
The documentation for this class was generated from the following files: