arnaucube
arnaucube/poulpyPublic Self-hosted repository
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