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

#include <geometric_sequence_domain.hpp>

+ Inheritance diagram for nil::crypto3::math::geometric_sequence_domain< FieldType >:
+ Collaboration diagram for nil::crypto3::math::geometric_sequence_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)
 
void do_precomputation ()
 
std::vector< value_type > evaluate_all_lagrange_polynomials (const value_type &t)
 
void fft (std::vector< value_type > &a)
 
 geometric_sequence_domain (const std::size_t m)
 
value_type get_domain_element (const std::size_t idx)
 
void inverse_fft (std::vector< value_type > &a)
 

Public Attributes

value_type domain
 
value_type domain_inverse
 
value_type generator
 
value_type generator_inverse
 
std::size_t generator_size
 
std::vector< value_type > geometric_sequence
 
std::vector< value_type > geometric_triangular_sequence
 
std::size_t log2_size
 
std::size_t m
 
bool precomputation_sentinel
 
value_type root
 
value_type root_inverse
 

Member Typedef Documentation

◆ field_type

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

Constructor & Destructor Documentation

◆ geometric_sequence_domain()

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

Member Function Documentation

◆ add_poly_z()

template<typename FieldType >
void nil::crypto3::math::geometric_sequence_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::geometric_sequence_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::geometric_sequence_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 >.

◆ do_precomputation()

template<typename FieldType >
void nil::crypto3::math::geometric_sequence_domain< FieldType >::do_precomputation ( )
inline

◆ evaluate_all_lagrange_polynomials()

template<typename FieldType >
std::vector<value_type> nil::crypto3::math::geometric_sequence_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.

If t equals one of the geometric progression values, then output 1 at the right place, and 0 elsewhere.

Otherwise, if t does not equal any of the geometric progression values, then compute each Lagrange coefficient.

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

◆ fft()

template<typename FieldType >
void nil::crypto3::math::geometric_sequence_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::geometric_sequence_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::geometric_sequence_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

◆ 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

◆ geometric_sequence

template<typename FieldType >
std::vector<value_type> nil::crypto3::math::geometric_sequence_domain< FieldType >::geometric_sequence

◆ geometric_triangular_sequence

template<typename FieldType >
std::vector<value_type> nil::crypto3::math::geometric_sequence_domain< FieldType >::geometric_triangular_sequence

◆ 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

◆ precomputation_sentinel

template<typename FieldType >
bool nil::crypto3::math::geometric_sequence_domain< FieldType >::precomputation_sentinel

◆ 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

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