poulpy/poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/test/testlib/ntt120_dft.h
poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/test/testlib/ntt120_dft.hRaw
1#ifndef SPQLIOS_NTT120_DFT_H
2#define SPQLIOS_NTT120_DFT_H
3
4#include <vector>
5
6#include "../../spqlios/q120/q120_arithmetic.h"
7#include "mod_q120.h"
8#include "negacyclic_polynomial.h"
9#include "test_commons.h"
10
11class q120_nttvec {
12 public:
13 std::vector<mod_q120> v;
14 q120_nttvec() = default;
15 explicit q120_nttvec(uint64_t n);
16 q120_nttvec(uint64_t n, const q120b* data);
17 q120_nttvec(uint64_t n, const q120c* data);
18 uint64_t nn() const;
19 static q120_nttvec zero(uint64_t n);
20 static q120_nttvec random(uint64_t n);
21 void save_as(q120a* dest) const;
22 void save_as(q120b* dest) const;
23 void save_as(q120c* dest) const;
24 mod_q120 get_blk(uint64_t blk) const;
25};
26
27q120_nttvec simple_ntt120(const znx_i64& polynomial);
28znx_i128 simple_intt120(const q120_nttvec& fftvec);
29bool operator==(const q120_nttvec& a, const q120_nttvec& b);
30
31#endif // SPQLIOS_NTT120_DFT_H