#include #include "emp-tool/emp-tool.h" #include using namespace std; using namespace emp; template void test_int(int64_t party, int range1 = 1<<25, int range2 = 1<<25, int runs = 1000) { PRG prg; for(int i = 0; i < runs; ++i) { long long ia, ib; prg.random_data(&ia, 8); prg.random_data(&ib, 8); ia %= range1; ib %= range2; while( Op()(int(ia), int(ib)) != Op()(ia, ib) ) { prg.random_data(&ia, 8); prg.random_data(&ib, 8); ia %= range1; ib %= range2; } Integer a(32, ia, ALICE); Integer b(32, ib, BOB); Integer res = Op2()(a,b); if (res.reveal(PUBLIC) != Op()(ia,ib)) { cout << a.reveal()<(PUBLIC)<(PUBLIC) == Op()(ia,ib)); } cout << typeid(Op2).name()<<"\t\t\tDONE"<(PUBLIC)<(PUBLIC)<(PUBLIC)<(PUBLIC)<, std::plus>(party); test_int, std::minus>(party); test_int, std::multiplies>(party); test_int, std::divides>(party); test_int, std::modulus>(party); test_int, std::bit_and>(party); test_int, std::bit_or>(party); test_int, std::bit_xor>(party); cout << CircuitExecution::circ_exec->num_and()<