#ifndef SPQLIOS_EXT_VEC_RNX_LAYOUT_H #define SPQLIOS_EXT_VEC_RNX_LAYOUT_H #include "../../spqlios/arithmetic/vec_rnx_arithmetic.h" #include "fft64_dft.h" #include "negacyclic_polynomial.h" #include "reim4_elem.h" #include "test_commons.h" /** @brief a test memory layout for rnx i64 polynomials vectors */ class rnx_vec_f64_layout { uint64_t n; uint64_t size; uint64_t slice; double* data_start; uint8_t* region; public: // NO-COPY structure rnx_vec_f64_layout(const rnx_vec_f64_layout&) = delete; void operator=(const rnx_vec_f64_layout&) = delete; rnx_vec_f64_layout(rnx_vec_f64_layout&&) = delete; void operator=(rnx_vec_f64_layout&&) = delete; /** @brief initialises a memory layout */ rnx_vec_f64_layout(uint64_t n, uint64_t size, uint64_t slice); /** @brief destructor */ ~rnx_vec_f64_layout(); /** @brief get a copy of item index index (extended with zeros) */ rnx_f64 get_copy_zext(uint64_t index) const; /** @brief get a copy of item index index (extended with zeros) */ rnx_f64 get_copy(uint64_t index) const; /** @brief get a copy of item index index (extended with zeros) */ reim_fft64vec get_dft_copy_zext(uint64_t index) const; /** @brief get a copy of item index index (extended with zeros) */ reim_fft64vec get_dft_copy(uint64_t index) const; /** @brief get a copy of item index index (index