nil::crypto3::math::evaluation_domain< FieldType > Class Template Referenceabstract

#include <evaluation_domain.hpp>

+ Inheritance diagram for nil::crypto3::math::evaluation_domain< FieldType >:
+ Collaboration diagram for nil::crypto3::math::evaluation_domain< FieldType >:

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

template<typename FieldType >
typedef FieldType nil::crypto3::math::evaluation_domain< FieldType >::field_type

Constructor & Destructor Documentation

◆ evaluation_domain()

template<typename FieldType >
nil::crypto3::math::evaluation_domain< FieldType >::evaluation_domain ( const std::size_t  m)
inline

Construct an evaluation domain S of size m, if possible.

(See the function get_evaluation_domain below.)

Member Function Documentation

◆ add_poly_z()

template<typename FieldType >
virtual void nil::crypto3::math::evaluation_domain< FieldType >::add_poly_z ( const value_type &  coeff,
std::vector< value_type > &  H 
)
pure virtual

◆ compute_vanishing_polynomial()

template<typename FieldType >
virtual value_type nil::crypto3::math::evaluation_domain< FieldType >::compute_vanishing_polynomial ( const value_type &  t)
pure virtual

◆ divide_by_z_on_coset()

template<typename FieldType >
virtual void nil::crypto3::math::evaluation_domain< FieldType >::divide_by_z_on_coset ( std::vector< value_type > &  P)
pure virtual

◆ evaluate_all_lagrange_polynomials()

template<typename FieldType >
virtual std::vector<value_type> nil::crypto3::math::evaluation_domain< FieldType >::evaluate_all_lagrange_polynomials ( const value_type &  t)
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()

◆ get_domain_element()

◆ inverse_fft()

template<typename FieldType >
virtual void nil::crypto3::math::evaluation_domain< FieldType >::inverse_fft ( std::vector< value_type > &  a)
pure virtual

Member Data Documentation

◆ domain

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::domain

◆ domain_inverse

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::domain_inverse

◆ generator

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::generator

◆ generator_inverse

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::generator_inverse

◆ generator_size

template<typename FieldType >
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::generator_size

◆ log2_size

template<typename FieldType >
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::log2_size

◆ m

template<typename FieldType >
std::size_t nil::crypto3::math::evaluation_domain< FieldType >::m

◆ root

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::root

◆ root_inverse

template<typename FieldType >
value_type nil::crypto3::math::evaluation_domain< FieldType >::root_inverse

The documentation for this class was generated from the following files: