56template<
typename T,
typename FieldT, multi_exp_method Method>
57T multi_exp(
typename std::vector<T>::const_iterator vec_start,
58 typename std::vector<T>::const_iterator vec_end,
59 typename std::vector<FieldT>::const_iterator scalar_start,
60 typename std::vector<FieldT>::const_iterator scalar_end,
70template<
typename T,
typename FieldT, multi_exp_method Method>
72 typename std::vector<T>::const_iterator vec_end,
73 typename std::vector<FieldT>::const_iterator scalar_start,
74 typename std::vector<FieldT>::const_iterator scalar_end,
83 typename std::vector<T>::const_iterator a_end,
84 typename std::vector<T>::const_iterator b_start,
85 typename std::vector<T>::const_iterator b_end);
107template<
typename T,
typename FieldT>
113template<
typename T,
typename FieldT>
117 const std::vector<FieldT> &v);
119template<
typename T,
typename FieldT>
124 const std::vector<FieldT> &v);
131#include <libff/algebra/scalar_multiplication/multiexp.tcc>
std::vector< T > batch_exp(const size_t scalar_size, const size_t window, const window_table< T > &table, const std::vector< FieldT > &v)
std::vector< T > 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)
T multi_exp_with_mixed_addition(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)
size_t get_exp_window_size(const size_t num_scalars)
@ multi_exp_method_naive_plain
@ multi_exp_method_BDLO12
@ multi_exp_method_bos_coster
T 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)
window_table< T > get_window_table(const size_t scalar_size, const size_t window, const T &g)
T windowed_exp(const size_t scalar_size, const size_t window, const window_table< T > &powers_of_g, const FieldT &pow)
T 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)
void batch_to_special(std::vector< T > &vec)
std::vector< std::vector< T > > window_table
#define T(meth, val, expected)