Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
double.hpp
Go to the documentation of this file.
1 
12 #ifndef DOUBLE_HPP_
13 #define DOUBLE_HPP_
14 
15 #include <complex>
17 
18 namespace libff
19 {
20 
21 class Double
22 {
23 public:
24  std::complex<double> val;
25 
26  Double();
27 
28  Double(double real);
29 
30  Double(double real, double imag);
31 
32  Double(std::complex<double> num);
33 
34  static unsigned add_cnt;
35  static unsigned sub_cnt;
36  static unsigned mul_cnt;
37  static unsigned inv_cnt;
38 
39  Double operator+(const Double &other) const;
40  Double operator-(const Double &other) const;
41  Double operator*(const Double &other) const;
42  Double operator-() const;
43 
44  Double &operator+=(const Double &other);
45  Double &operator-=(const Double &other);
46  Double &operator*=(const Double &other);
47 
48  bool operator==(const Double &other) const;
49  bool operator!=(const Double &other) const;
50 
51  bool operator<(const Double &other) const;
52  bool operator>(const Double &other) const;
53 
55  Double operator^(const size_t power) const;
56 
58  unsigned long as_ulong() const;
59  Double inverse() const;
60  Double squared() const;
61 
62  static Double one();
63  static Double zero();
64  static Double random_element();
65  static Double geometric_generator();
67 
69  static Double root_of_unity; // See get_root_of_unity() in field_utils
70  static size_t s;
71 };
72 } // namespace libff
73 
74 #endif // DOUBLE_HPP_
libff::Double::operator-=
Double & operator-=(const Double &other)
Definition: double.cpp:82
libff::Double::operator*
Double operator*(const Double &other) const
Definition: double.cpp:55
libff::Double::operator!=
bool operator!=(const Double &other) const
Definition: double.cpp:108
libff
Definition: ffi.cpp:8
libff::Double::zero
static Double zero()
Definition: double.cpp:153
bigint.hpp
libff::Double::random_element
static Double random_element()
Definition: double.cpp:155
libff::Double::inverse
Double inverse() const
Definition: double.cpp:133
libff::Double::val
std::complex< double > val
Definition: double.hpp:24
libff::Double::geometric_generator
static Double geometric_generator()
Definition: double.cpp:157
libff::Double::operator*=
Double & operator*=(const Double &other)
Definition: double.cpp:92
libff::Double::operator==
bool operator==(const Double &other) const
Definition: double.cpp:102
libff::Double::operator+
Double operator+(const Double &other) const
Definition: double.cpp:37
libff::Double::as_bigint
libff::bigint< 1 > as_bigint() const
Definition: double.cpp:142
libff::Double::arithmetic_generator
static Double arithmetic_generator()
Definition: double.cpp:159
libff::Double::mul_cnt
static unsigned mul_cnt
Definition: double.hpp:36
libff::Double
Definition: double.hpp:21
libff::Double::operator<
bool operator<(const Double &other) const
Definition: double.cpp:113
libff::Double::as_ulong
unsigned long as_ulong() const
Definition: double.cpp:147
libff::Double::operator^
Double operator^(const libff::bigint< 1 > power) const
Definition: double.cpp:123
libff::Double::add_cnt
static unsigned add_cnt
Definition: double.hpp:34
libff::Double::squared
Double squared() const
Definition: double.cpp:149
libff::Double::operator-
Double operator-() const
Definition: double.cpp:64
libff::bigint
Definition: bigint.hpp:20
libff::Double::multiplicative_generator
static Double multiplicative_generator
Definition: double.hpp:68
libff::Double::one
static Double one()
Definition: double.cpp:151
libff::Double::inv_cnt
static unsigned inv_cnt
Definition: double.hpp:37
libff::Double::s
static size_t s
Definition: double.hpp:70
libff::Double::root_of_unity
static Double root_of_unity
Definition: double.hpp:69
libff::power
FieldT power(const FieldT &base, const bigint< m > &exponent)
libff::Double::Double
Double()
Definition: double.cpp:21
libff::Double::operator>
bool operator>(const Double &other) const
Definition: double.cpp:118
libff::Double::sub_cnt
static unsigned sub_cnt
Definition: double.hpp:35
libff::Double::operator+=
Double & operator+=(const Double &other)
Definition: double.cpp:72