1 #include <nfl.hpp>
2 #include "tools.h"
3
4 #define ITERATIONS 100
5
6 template<size_t degree, size_t modulus, class T>
run()7 bool run()
8 {
9 using poly_t = nfl::poly_from_modulus<T, degree, modulus>;
10
11 poly_t* resa = alloc_aligned<poly_t, 32>(ITERATIONS, nfl::uniform());
12
13 bool ret_value = true;
14 // Randomized tests
15 for (size_t i = 0 ; i < ITERATIONS; i++)
16 ret_value &= (resa[i] == resa[i]);
17
18 free_aligned(ITERATIONS, resa);
19
20 return ret_value;
21 }
22
23 template<size_t degree, size_t modulus, class T>
run_p()24 bool run_p()
25 {
26 using poly_p = nfl::poly_p_from_modulus<T, degree, modulus>;
27
28 poly_p* resa = new poly_p[ITERATIONS];
29 for (size_t i = 0 ; i < ITERATIONS; i++) {
30 resa[i] = nfl::uniform();
31 }
32
33 bool ret_value = true;
34 // Randomized tests
35 for (size_t i = 0 ; i < ITERATIONS; i++)
36 ret_value &= (resa[i] == resa[i]);
37
38 delete[] resa;
39
40 return ret_value;
41 }
42
main(int argc,char const * argv[])43 int main(int argc, char const* argv[]) {
44 return not (run<CONFIG>() and run_p<CONFIG>()) ;
45 }
46