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