/** @file ***************************************************************************** * @author This file is part of libsnark, developed by SCIPR Lab * and contributors (see AUTHORS). * @copyright MIT license (see LICENSE file) *****************************************************************************/ #ifndef KC_MULTIEXP_HPP_ #define KC_MULTIEXP_HPP_ /* Split out from multiexp to prevent cyclical dependencies. I.e. previously multiexp depended on knowledge_commitment, which depended on sparse_vector, which depended on multiexp (to do accumulate). Will probably go away in more general exp refactoring. */ #include "algebra/knowledge_commitment/knowledge_commitment.hpp" namespace libsnark { template knowledge_commitment opt_window_wnaf_exp(const knowledge_commitment &base, const bigint &scalar, const size_t scalar_bits); template knowledge_commitment kc_multi_exp_with_mixed_addition(const knowledge_commitment_vector &vec, const size_t min_idx, const size_t max_idx, typename std::vector::const_iterator scalar_start, typename std::vector::const_iterator scalar_end, const size_t chunks, const bool use_multiexp=false); template void kc_batch_to_special(std::vector > &vec); template knowledge_commitment_vector kc_batch_exp(const size_t scalar_size, const size_t T1_window, const size_t T2_window, const window_table &T1_table, const window_table &T2_table, const FieldT &T1_coeff, const FieldT &T2_coeff, const std::vector &v, const size_t suggested_num_chunks); } // libsnark #include "algebra/scalar_multiplication/kc_multiexp.tcc" #endif // KC_MULTIEXP_HPP_