Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
utils.hpp
Go to the documentation of this file.
1 
10 #ifndef UTILS_HPP_
11 #define UTILS_HPP_
12 
13 #include <cassert>
14 #include <iostream>
15 #include <sstream>
16 #include <string>
17 #include <vector>
18 
19 namespace libff
20 {
21 
22 typedef std::vector<bool> bit_vector;
23 
24 size_t get_power_of_two(size_t n);
25 
28 size_t log2(size_t n);
29 
30 inline size_t exp2(size_t k) { return size_t(1) << k; }
31 
32 size_t to_twos_complement(int i, size_t w);
33 int from_twos_complement(size_t i, size_t w);
34 
35 size_t bitreverse(size_t n, const size_t l);
37  const std::initializer_list<unsigned long> &l, const size_t wordsize);
38 long long div_ceil(long long x, long long y);
39 
40 bool is_little_endian();
41 
42 std::string FORMAT(const std::string &prefix, const char *format, ...);
43 
45 template<typename... Types> void UNUSED(Types &&...) {}
46 
47 #ifdef DEBUG
48 #define FMT libff::FORMAT
49 #else
50 #define FMT(...) (libff::UNUSED(__VA_ARGS__), "")
51 #endif
52 
53 void serialize_bit_vector(std::ostream &out, const bit_vector &v);
54 void deserialize_bit_vector(std::istream &in, bit_vector &v);
55 
56 template<typename T> size_t size_in_bits(const std::vector<T> &v);
57 
58 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
59 
60 } // namespace libff
61 
62 #include "libff/common/utils.tcc"
63 
64 #endif // UTILS_HPP_
libff::get_power_of_two
size_t get_power_of_two(size_t n)
Definition: utils.cpp:19
libff
Definition: ffi.cpp:8
utils.tcc
libff::UNUSED
void UNUSED(Types &&...)
A variadic template to suppress unused argument warnings.
Definition: utils.hpp:45
libff::exp2
size_t exp2(size_t k)
Definition: utils.hpp:30
libff::div_ceil
long long div_ceil(long long x, long long y)
Definition: utils.cpp:82
libff::int_list_to_bits
bit_vector int_list_to_bits(const std::initializer_list< unsigned long > &l, const size_t wordsize)
Definition: utils.cpp:69
libff::bit_vector
std::vector< bool > bit_vector
Definition: utils.hpp:22
libff::bitreverse
size_t bitreverse(size_t n, const size_t l)
Definition: utils.cpp:59
libff::serialize_bit_vector
void serialize_bit_vector(std::ostream &out, const bit_vector &v)
Definition: utils.cpp:103
libff::is_little_endian
bool is_little_endian()
Definition: utils.cpp:84
libff::log2
size_t log2(size_t n)
Definition: utils.cpp:32
libff::to_twos_complement
size_t to_twos_complement(int i, size_t w)
Definition: utils.cpp:46
libff::FORMAT
std::string FORMAT(const std::string &prefix, const char *format,...)
Definition: utils.cpp:91
libff::from_twos_complement
int from_twos_complement(size_t i, size_t w)
Definition: utils.cpp:53
libff::deserialize_bit_vector
void deserialize_bit_vector(std::istream &in, bit_vector &v)
Definition: utils.cpp:111
libff::size_in_bits
size_t size_in_bits(const std::vector< T > &v)