nil::crypto3::math::step_radix2_domain< FieldType > Class Template Reference

#include <step_radix2_domain.hpp>

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

Public Types

typedef FieldType field_type
 

Public Member Functions

void add_poly_z (const value_type &coeff, std::vector< value_type > &H)
 
value_type compute_vanishing_polynomial (const value_type &t)
 
void divide_by_z_on_coset (std::vector< value_type > &P)
 
std::vector< value_type > evaluate_all_lagrange_polynomials (const value_type &t)
 
void fft (std::vector< value_type > &a)
 
value_type get_domain_element (const std::size_t idx)
 
void inverse_fft (std::vector< value_type > &a)
 
 step_radix2_domain (const std::size_t m)
 

Public Attributes

std::size_t big_m
 
value_type big_omega
 
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 omega
 
value_type root
 
value_type root_inverse
 
std::size_t small_m
 
value_type small_omega
 

Member Typedef Documentation

◆ field_type

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

Constructor & Destructor Documentation

◆ step_radix2_domain()

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

Member Function Documentation

◆ add_poly_z()

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

Add the coefficients of the vanishing polynomial of S to the coefficients of the polynomial H.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ compute_vanishing_polynomial()

template<typename FieldType >
value_type nil::crypto3::math::step_radix2_domain< FieldType >::compute_vanishing_polynomial ( const value_type &  t)
inlinevirtual

Evaluate the vanishing polynomial of S at the field element t.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ divide_by_z_on_coset()

template<typename FieldType >
void nil::crypto3::math::step_radix2_domain< FieldType >::divide_by_z_on_coset ( std::vector< value_type > &  P)
inlinevirtual

Multiply by the evaluation, on a coset of S, of the inverse of the vanishing polynomial of S.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ evaluate_all_lagrange_polynomials()

template<typename FieldType >
std::vector<value_type> nil::crypto3::math::step_radix2_domain< FieldType >::evaluate_all_lagrange_polynomials ( const value_type &  t)
inlinevirtual

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.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ fft()

template<typename FieldType >
void nil::crypto3::math::step_radix2_domain< FieldType >::fft ( std::vector< value_type > &  a)
inlinevirtual

Compute the FFT, over the domain S, of the vector a.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ get_domain_element()

template<typename FieldType >
value_type nil::crypto3::math::step_radix2_domain< FieldType >::get_domain_element ( const std::size_t  idx)
inlinevirtual

Get the idx-th element in S.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

◆ inverse_fft()

template<typename FieldType >
void nil::crypto3::math::step_radix2_domain< FieldType >::inverse_fft ( std::vector< value_type > &  a)
inlinevirtual

Compute the inverse FFT, over the domain S, of the vector a.

Implements nil::crypto3::math::evaluation_domain< FieldType >.

Member Data Documentation

◆ big_m

template<typename FieldType >
std::size_t nil::crypto3::math::step_radix2_domain< FieldType >::big_m

◆ big_omega

template<typename FieldType >
value_type nil::crypto3::math::step_radix2_domain< FieldType >::big_omega

◆ domain

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

◆ domain_inverse

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

◆ generator

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

◆ generator_inverse

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

◆ generator_size

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

◆ log2_size

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

◆ m

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

◆ omega

template<typename FieldType >
value_type nil::crypto3::math::step_radix2_domain< FieldType >::omega

◆ root

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

◆ root_inverse

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

◆ small_m

template<typename FieldType >
std::size_t nil::crypto3::math::step_radix2_domain< FieldType >::small_m

◆ small_omega

template<typename FieldType >
value_type nil::crypto3::math::step_radix2_domain< FieldType >::small_omega

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