Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
field_utils.hpp
Go to the documentation of this file.
1 
8 #ifndef FIELD_UTILS_HPP_
9 #define FIELD_UTILS_HPP_
10 
13 #include "libff/common/double.hpp"
14 #include "libff/common/utils.hpp"
15 
16 #include <cstdint>
17 
18 namespace libff
19 {
20 
21 // returns true if get_root_of_unity will succeed.
22 template<typename FieldT>
23 typename std::enable_if<std::is_same<FieldT, Double>::value, bool>::type
24 has_root_of_unity(const size_t n);
25 
26 template<typename FieldT>
27 typename std::enable_if<!std::is_same<FieldT, Double>::value, bool>::type
28 has_root_of_unity(const size_t n);
29 
30 // returns root of unity of order n (for n a power of 2), if one exists
31 template<typename FieldT>
32 typename std::enable_if<std::is_same<FieldT, Double>::value, FieldT>::type
33 get_root_of_unity(const size_t n);
34 
35 template<typename FieldT>
36 typename std::enable_if<!std::is_same<FieldT, Double>::value, FieldT>::type
37 get_root_of_unity(const size_t n);
38 
40 template<mp_size_t n>
41 size_t field_get_digit(
42  const bigint<n> &v, const size_t digit_size, const size_t digit_index);
43 
45 template<mp_size_t n>
47  const bigint<n> &v, const size_t digit_size, const size_t digit_index);
48 
51 template<typename FieldT>
53  std::vector<ssize_t> &digits,
54  const FieldT &v,
55  const size_t digit_size,
56  const size_t num_digits);
57 
58 template<typename FieldT>
60  const std::vector<size_t> &v, const size_t w);
61 
62 template<typename FieldT>
64  const bit_vector &v, const size_t chunk_bits);
65 
66 template<typename FieldT>
68  const bit_vector &v);
69 
70 template<typename FieldT>
72  const bit_vector &v);
73 
74 template<typename FieldT>
76  const std::vector<FieldT> &v);
77 
78 template<typename FieldT>
80 
81 template<typename FieldT>
83  const FieldT &el, const size_t bitcount);
84 
85 template<typename FieldT>
87 
88 template<typename FieldT> void batch_invert(std::vector<FieldT> &vec);
89 
92 template<typename FieldT>
93 const typename FieldT::my_Fp &field_get_component_0(const FieldT &v);
94 
98 template<
99  mp_size_t wn,
100  const bigint<wn> &wmodulus,
101  mp_size_t nn,
102  const bigint<nn> &nmodulus>
103 void fp_from_fp(Fp_model<wn, wmodulus> &wfp, const Fp_model<nn, nmodulus> &nfp);
104 
106 template<typename FieldT> void print_vector(const std::vector<FieldT> &v);
107 
108 } // namespace libff
109 
111 
112 #endif // FIELD_UTILS_HPP_
libff::fp_from_fp
void fp_from_fp(Fp_model< wn, wmodulus > &wfp, const Fp_model< nn, nmodulus > &nfp)
libff::convert_bit_vector_to_field_element
FieldT convert_bit_vector_to_field_element(const bit_vector &v)
field_utils.tcc
utils.hpp
libff
Definition: ffi.cpp:8
libff::convert_field_element_to_bit_vector
bit_vector convert_field_element_to_bit_vector(const FieldT &el)
fp.hpp
bigint.hpp
libff::get_root_of_unity
std::enable_if< std::is_same< FieldT, Double >::value, FieldT >::type get_root_of_unity(const size_t n)
libff::field_get_component_0
const FieldT::my_Fp & field_get_component_0(const FieldT &v)
libff::field_get_signed_digit
ssize_t field_get_signed_digit(const bigint< n > &v, const size_t digit_size, const size_t digit_index)
Decompose v into fixed-size signed digits of digit_size bits each.
libff::batch_invert
void batch_invert(std::vector< FieldT > &vec)
libff::bit_vector
std::vector< bool > bit_vector
Definition: utils.hpp:22
libff::field_get_signed_digits
void field_get_signed_digits(std::vector< ssize_t > &digits, const FieldT &v, const size_t digit_size, const size_t num_digits)
libff::pack_bit_vector_into_field_element_vector
std::vector< FieldT > pack_bit_vector_into_field_element_vector(const bit_vector &v, const size_t chunk_bits)
libff::field_get_digit
size_t field_get_digit(const bigint< n > &v, const size_t digit_size, const size_t digit_index)
Decompose v into fixed-size digits of digit_size bits each.
libff::convert_field_element_vector_to_bit_vector
bit_vector convert_field_element_vector_to_bit_vector(const std::vector< FieldT > &v)
libff::convert_bit_vector_to_field_element_vector
std::vector< FieldT > convert_bit_vector_to_field_element_vector(const bit_vector &v)
libff::pack_int_vector_into_field_element_vector
std::vector< FieldT > pack_int_vector_into_field_element_vector(const std::vector< size_t > &v, const size_t w)
libff::print_vector
void print_vector(const std::vector< FieldT > &v)
print the elements of a vector
double.hpp
libff::has_root_of_unity
std::enable_if< std::is_same< FieldT, Double >::value, bool >::type has_root_of_unity(const size_t n)