multiexp.hpp File Reference
#include <vector>
#include <nil/crypto3/multiprecision/number.hpp>
#include <nil/crypto3/multiprecision/cpp_int.hpp>
#include <nil/crypto3/algebra/multiexp/policies.hpp>
#include <nil/crypto3/algebra/curves/params.hpp>
+ 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

 nil
 
 nil::crypto3
 
 nil::crypto3::algebra
 

Typedefs

template<typename GroupType >
using nil::crypto3::algebra::window_table = std::vector< std::vector< typename GroupType::value_type > >
 

Functions

template<typename GroupType , typename FieldType , typename InputRange , typename = typename std::enable_if< std::is_same<typename InputRange::value_type, typename FieldType::value_type>::value>::type>
std::vector< typename GroupType::value_type > nil::crypto3::algebra::batch_exp (const std::size_t scalar_size, const std::size_t window, const window_table< GroupType > &table, const InputRange &v)
 
template<typename GroupType , typename FieldType , typename InputRange , typename = typename std::enable_if< std::is_same<typename InputRange::value_type, typename FieldType::value_type>::value>::type>
std::vector< typename GroupType::value_type > nil::crypto3::algebra::batch_exp_with_coeff (const std::size_t scalar_size, const std::size_t window, const window_table< GroupType > &table, const typename FieldType::value_type &coeff, const InputRange &v)
 
template<typename GroupType , typename InputRange >
std::enable_if< std::is_same< typename InputRange::value_type, typename GroupType::value_type >::value, void >::type nil::crypto3::algebra::batch_to_special (InputRange &vec)
 
template<typename GroupType >
std::size_t nil::crypto3::algebra::get_exp_window_size (const std::size_t num_scalars)
 
template<typename GroupType >
window_table< GroupType > nil::crypto3::algebra::get_window_table (const std::size_t scalar_size, const std::size_t window, const typename GroupType::value_type &g)
 
template<typename MultiexpMethod , typename InputBaseIterator , typename InputFieldIterator >
std::iterator_traits< InputBaseIterator >::value_type nil::crypto3::algebra::multiexp (InputBaseIterator vec_start, InputBaseIterator vec_end, InputFieldIterator scalar_start, InputFieldIterator scalar_end, const std::size_t chunks_count)
 
template<typename MultiexpMethod , typename InputBaseIterator , typename InputFieldIterator >
std::iterator_traits< InputBaseIterator >::value_type nil::crypto3::algebra::multiexp_with_mixed_addition (InputBaseIterator vec_start, InputBaseIterator vec_end, InputFieldIterator scalar_start, InputFieldIterator scalar_end, const std::size_t chunks_count)
 
template<typename GroupType , typename FieldType >
GroupType::value_type nil::crypto3::algebra::windowed_exp (const std::size_t scalar_size, const std::size_t window, const window_table< GroupType > &powers_of_g, const typename FieldType::value_type &pow)