a07ecfe284e26de97874564f6efc49d0ea543378
[VerusCoin.git] / src / snark / libsnark / algebra / fields / field_utils.hpp
1 /** @file
2  *****************************************************************************
3  * @author     This file is part of libsnark, developed by SCIPR Lab
4  *             and contributors (see AUTHORS).
5  * @copyright  MIT license (see LICENSE file)
6  *****************************************************************************/
7
8 #ifndef FIELD_UTILS_HPP_
9 #define FIELD_UTILS_HPP_
10 #include <cstdint>
11
12 #include "common/utils.hpp"
13 #include "algebra/fields/bigint.hpp"
14
15 namespace libsnark {
16
17 // returns root of unity of order n (for n a power of 2), if one exists
18 template<typename FieldT>
19 FieldT get_root_of_unity(const size_t n);
20
21 template<typename FieldT>
22 std::vector<FieldT> pack_int_vector_into_field_element_vector(const std::vector<size_t> &v, const size_t w);
23
24 template<typename FieldT>
25 std::vector<FieldT> pack_bit_vector_into_field_element_vector(const bit_vector &v, const size_t chunk_bits);
26
27 template<typename FieldT>
28 std::vector<FieldT> pack_bit_vector_into_field_element_vector(const bit_vector &v);
29
30 template<typename FieldT>
31 std::vector<FieldT> convert_bit_vector_to_field_element_vector(const bit_vector &v);
32
33 template<typename FieldT>
34 bit_vector convert_field_element_vector_to_bit_vector(const std::vector<FieldT> &v);
35
36 template<typename FieldT>
37 bit_vector convert_field_element_to_bit_vector(const FieldT &el);
38
39 template<typename FieldT>
40 bit_vector convert_field_element_to_bit_vector(const FieldT &el, const size_t bitcount);
41
42 template<typename FieldT>
43 FieldT convert_bit_vector_to_field_element(const bit_vector &v);
44
45 template<typename FieldT>
46 void batch_invert(std::vector<FieldT> &vec);
47
48 } // libsnark
49 #include "algebra/fields/field_utils.tcc"
50
51 #endif // FIELD_UTILS_HPP_
This page took 0.018463 seconds and 2 git commands to generate.