Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
Namespaces | Typedefs | Enumerations | Functions
multiexp.hpp File Reference
#include <cstddef>
#include <vector>
#include <libff/algebra/scalar_multiplication/multiexp.tcc>
Include dependency graph for multiexp.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 libff
 

Typedefs

template<typename T >
using libff::window_table = std::vector< std::vector< T > >
 

Enumerations

enum  libff::multi_exp_method {
  libff::multi_exp_method_naive, libff::multi_exp_method_naive_plain, libff::multi_exp_method_bos_coster, libff::multi_exp_method_BDLO12,
  libff::multi_exp_method_BDLO12_signed
}
 
enum  libff::multi_exp_base_form { libff::multi_exp_base_form_normal, libff::multi_exp_base_form_special }
 Form of base elements passed to multi_exp routines. More...
 

Functions

template<typename T , typename FieldT , multi_exp_method Method, multi_exp_base_form BaseForm = multi_exp_base_form_normal>
libff::multi_exp (typename std::vector< T >::const_iterator vec_start, typename std::vector< T >::const_iterator vec_end, typename std::vector< FieldT >::const_iterator scalar_start, typename std::vector< FieldT >::const_iterator scalar_end, const size_t chunks)
 
template<typename T , typename FieldT , multi_exp_method Method, multi_exp_base_form BaseForm = multi_exp_base_form_normal>
libff::multi_exp_filter_one_zero (typename std::vector< T >::const_iterator vec_start, typename std::vector< T >::const_iterator vec_end, typename std::vector< FieldT >::const_iterator scalar_start, typename std::vector< FieldT >::const_iterator scalar_end, const size_t chunks)
 
template<typename T >
libff::inner_product (typename std::vector< T >::const_iterator a_start, typename std::vector< T >::const_iterator a_end, typename std::vector< T >::const_iterator b_start, typename std::vector< T >::const_iterator b_end)
 
template<typename T >
size_t libff::get_exp_window_size (const size_t num_scalars)
 Compute window size for the given number of scalars. More...
 
template<typename T >
window_table< T > libff::get_window_table (const size_t scalar_size, const size_t window, const T &g)
 Compute table of window sizes. More...
 
template<typename T , typename FieldT >
libff::windowed_exp (const size_t scalar_size, const size_t window, const window_table< T > &powers_of_g, const FieldT &pow)
 
template<typename T , typename FieldT >
std::vector< T > libff::batch_exp (const size_t scalar_size, const size_t window, const window_table< T > &table, const std::vector< FieldT > &v)
 
template<typename T , typename FieldT >
std::vector< T > libff::batch_exp (const size_t scalar_size, const size_t window, const window_table< T > &table, const std::vector< FieldT > &v, size_t num_entries)
 
template<typename T , typename FieldT >
std::vector< T > libff::batch_exp_with_coeff (const size_t scalar_size, const size_t window, const window_table< T > &table, const FieldT &coeff, const std::vector< FieldT > &v)
 
template<typename T >
void libff::batch_to_special (std::vector< T > &vec)
 

Detailed Description

Declaration of interfaces for multi-exponentiation routines.

Author
This file is part of libff, developed by SCIPR Lab and contributors (see AUTHORS).

Definition in file multiexp.hpp.