emp-toolkit
float.h
Go to the documentation of this file.
1 #ifndef FLOAT_H__
2 #define FLOAT_H__
3 
4 #include "bit.h"
5 #include "integer.h"
6 #include "swappable.h"
7 #include "number.h"
8 #include <math.h>
9 
10 class Float: Swappable<Float> { public:
13  Float(Float && in):
14  value(std::move(in.value)),
15  expnt(std::move(in.expnt)) {
16  }
17 
18  Float(const Float & in) :
19  value(in.value),
20  expnt(in.expnt) {
21  }
22 
24  std::swap(value, rhs.value);
25  std::swap(expnt, rhs.expnt);
26  return *this;
27  }
28 
29  Float(int value_length, int expnt_length, double input, int party = PUBLIC);
30 
31  Float If(const Bit& select, const Float & d);
32 
33  template<typename O>
34  O reveal(int party = PUBLIC) const;
35 
36  int size() const;
37  Float abs() const;
38 
39  void normalize(int value_length, int to_add_to_expnt);
40 
41  string detail(int party) const;
42 
43  Bit greater(const Float & rhs) const;
44  Bit equal(const Float & rhs) const;
45 
46  Float operator+(const Float& rhs) const;
47  Float operator-(const Float& rhs) const;
48  Float operator-() const;
49  Float operator*(const Float& rhs) const;
50  Float operator/(const Float& rhs) const;
51  Float operator&(const Float& rhs) const;
52  Float operator|(const Float& rhs) const;
53  Float operator^(const Float& rhs) const;
54 };
55 
56 #include "float.hpp"
57 #endif// DOUBLE_H__
Float operator &(const Float &rhs) const
Float operator/(const Float &rhs) const
Definition: float.hpp:133
Float abs() const
Definition: float.hpp:44
Float operator+(const Float &rhs) const
Definition: float.hpp:67
O reveal(int party=PUBLIC) const
Bit equal(const Float &rhs) const
Definition: float.hpp:170
Float operator-() const
Definition: float.hpp:89
Float If(const Bit &select, const Float &d)
Definition: float.hpp:12
#define PUBLIC
Definition: utils.h:14
Integer value
Definition: float.h:11
Float operator^(const Float &rhs) const
Definition: float.hpp:152
string detail(int party) const
Definition: float.hpp:33
Float(Float &&in)
Definition: float.h:13
int size() const
Definition: float.hpp:40
Float(const Float &in)
Definition: float.h:18
Definition: swappable.h:7
void swap(const Bit &swap, T &o1, T &o2)
Definition: swappable.h:18
Definition: integer.h:14
Bit greater(const Float &rhs) const
Definition: float.hpp:166
void normalize(int value_length, int to_add_to_expnt)
Definition: float.hpp:50
Definition: bit.h:8
Integer expnt
Definition: float.h:12
Float operator|(const Float &rhs) const
Definition: float.hpp:145
Definition: float.h:10
Float operator*(const Float &rhs) const
Definition: float.hpp:95
int party
Definition: input-check-malicious.cpp:12
Float & operator=(Float rhs)
Definition: float.h:23