arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/base2k/src/ffi/vec_znx_big.rs
base2k/src/ffi/vec_znx_big.rsRaw
  1use crate::ffi::module::MODULE;
  2
  3#[repr(C)]
  4#[derive(Debug, Copy, Clone)]
  5pub struct vec_znx_bigcoeff_t {
  6    _unused: [u8; 0],
  7}
  8pub type VEC_ZNX_BIG = vec_znx_bigcoeff_t;
  9
 10unsafe extern "C" {
 11    pub fn bytes_of_vec_znx_big(module: *const MODULE, size: u64) -> u64;
 12}
 13unsafe extern "C" {
 14    pub fn new_vec_znx_big(module: *const MODULE, size: u64) -> *mut VEC_ZNX_BIG;
 15}
 16unsafe extern "C" {
 17    pub fn delete_vec_znx_big(res: *mut VEC_ZNX_BIG);
 18}
 19
 20unsafe extern "C" {
 21    pub fn vec_znx_big_add(
 22        module: *const MODULE,
 23        res: *mut VEC_ZNX_BIG,
 24        res_size: u64,
 25        a: *const VEC_ZNX_BIG,
 26        a_size: u64,
 27        b: *const VEC_ZNX_BIG,
 28        b_size: u64,
 29    );
 30}
 31unsafe extern "C" {
 32    pub fn vec_znx_big_add_small(
 33        module: *const MODULE,
 34        res: *mut VEC_ZNX_BIG,
 35        res_size: u64,
 36        a: *const VEC_ZNX_BIG,
 37        a_size: u64,
 38        b: *const i64,
 39        b_size: u64,
 40        b_sl: u64,
 41    );
 42}
 43unsafe extern "C" {
 44    pub fn vec_znx_big_add_small2(
 45        module: *const MODULE,
 46        res: *mut VEC_ZNX_BIG,
 47        res_size: u64,
 48        a: *const i64,
 49        a_size: u64,
 50        a_sl: u64,
 51        b: *const i64,
 52        b_size: u64,
 53        b_sl: u64,
 54    );
 55}
 56unsafe extern "C" {
 57    pub fn vec_znx_big_sub(
 58        module: *const MODULE,
 59        res: *mut VEC_ZNX_BIG,
 60        res_size: u64,
 61        a: *const VEC_ZNX_BIG,
 62        a_size: u64,
 63        b: *const VEC_ZNX_BIG,
 64        b_size: u64,
 65    );
 66}
 67unsafe extern "C" {
 68    pub fn vec_znx_big_sub_small_b(
 69        module: *const MODULE,
 70        res: *mut VEC_ZNX_BIG,
 71        res_size: u64,
 72        a: *const VEC_ZNX_BIG,
 73        a_size: u64,
 74        b: *const i64,
 75        b_size: u64,
 76        b_sl: u64,
 77    );
 78}
 79unsafe extern "C" {
 80    pub fn vec_znx_big_sub_small_a(
 81        module: *const MODULE,
 82        res: *mut VEC_ZNX_BIG,
 83        res_size: u64,
 84        a: *const i64,
 85        a_size: u64,
 86        a_sl: u64,
 87        b: *const VEC_ZNX_BIG,
 88        b_size: u64,
 89    );
 90}
 91unsafe extern "C" {
 92    pub fn vec_znx_big_sub_small2(
 93        module: *const MODULE,
 94        res: *mut VEC_ZNX_BIG,
 95        res_size: u64,
 96        a: *const i64,
 97        a_size: u64,
 98        a_sl: u64,
 99        b: *const i64,
100        b_size: u64,
101        b_sl: u64,
102    );
103}
104unsafe extern "C" {
105    pub fn vec_znx_big_normalize_base2k(
106        module: *const MODULE,
107        log2_base2k: u64,
108        res: *mut i64,
109        res_size: u64,
110        res_sl: u64,
111        a: *const VEC_ZNX_BIG,
112        a_size: u64,
113        tmp_space: *mut u8,
114    );
115}
116unsafe extern "C" {
117    pub fn vec_znx_big_normalize_base2k_tmp_bytes(module: *const MODULE) -> u64;
118}
119
120unsafe extern "C" {
121    pub fn vec_znx_big_automorphism(
122        module: *const MODULE,
123        p: i64,
124        res: *mut VEC_ZNX_BIG,
125        res_size: u64,
126        a: *const VEC_ZNX_BIG,
127        a_size: u64,
128    );
129}
130
131unsafe extern "C" {
132    pub fn vec_znx_big_rotate(
133        module: *const MODULE,
134        p: i64,
135        res: *mut VEC_ZNX_BIG,
136        res_size: u64,
137        a: *const VEC_ZNX_BIG,
138        a_size: u64,
139    );
140}
141
142unsafe extern "C" {
143    pub fn vec_znx_big_range_normalize_base2k(
144        module: *const MODULE,
145        log2_base2k: u64,
146        res: *mut i64,
147        res_size: u64,
148        res_sl: u64,
149        a: *const VEC_ZNX_BIG,
150        a_range_begin: u64,
151        a_range_xend: u64,
152        a_range_step: u64,
153        tmp_space: *mut u8,
154    );
155}
156unsafe extern "C" {
157    pub fn vec_znx_big_range_normalize_base2k_tmp_bytes(module: *const MODULE) -> u64;
158}