arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/backend/src/ffi/vec_znx_big.rs
backend/src/ffi/vec_znx_big.rsRaw
  1use crate::ffi::module::MODULE;
  2
  3#[repr(C)]
  4#[derive(Debug, Copy, Clone)]
  5pub struct vec_znx_big_t {
  6    _unused: [u8; 0],
  7}
  8pub type VEC_ZNX_BIG = vec_znx_big_t;
  9
 10unsafe extern "C" {
 11    pub unsafe fn bytes_of_vec_znx_big(module: *const MODULE, size: u64) -> u64;
 12}
 13unsafe extern "C" {
 14    pub unsafe fn new_vec_znx_big(module: *const MODULE, size: u64) -> *mut VEC_ZNX_BIG;
 15}
 16unsafe extern "C" {
 17    pub unsafe fn delete_vec_znx_big(res: *mut VEC_ZNX_BIG);
 18}
 19
 20unsafe extern "C" {
 21    pub unsafe 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 unsafe 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 unsafe 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 unsafe 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 unsafe 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 unsafe 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 unsafe 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}
104
105unsafe extern "C" {
106    pub unsafe fn vec_znx_big_normalize_base2k_tmp_bytes(module: *const MODULE) -> u64;
107}
108
109unsafe extern "C" {
110    pub unsafe fn vec_znx_big_normalize_base2k(
111        module: *const MODULE,
112        log2_base2k: u64,
113        res: *mut i64,
114        res_size: u64,
115        res_sl: u64,
116        a: *const VEC_ZNX_BIG,
117        a_size: u64,
118        tmp_space: *mut u8,
119    );
120}
121
122unsafe extern "C" {
123    pub unsafe fn vec_znx_big_range_normalize_base2k(
124        module: *const MODULE,
125        log2_base2k: u64,
126        res: *mut i64,
127        res_size: u64,
128        res_sl: u64,
129        a: *const VEC_ZNX_BIG,
130        a_range_begin: u64,
131        a_range_xend: u64,
132        a_range_step: u64,
133        tmp_space: *mut u8,
134    );
135}
136
137unsafe extern "C" {
138    pub unsafe fn vec_znx_big_range_normalize_base2k_tmp_bytes(module: *const MODULE) -> u64;
139}
140
141unsafe extern "C" {
142    pub unsafe fn vec_znx_big_automorphism(
143        module: *const MODULE,
144        p: i64,
145        res: *mut VEC_ZNX_BIG,
146        res_size: u64,
147        a: *const VEC_ZNX_BIG,
148        a_size: u64,
149    );
150}
151
152unsafe extern "C" {
153    pub unsafe fn vec_znx_big_rotate(
154        module: *const MODULE,
155        p: i64,
156        res: *mut VEC_ZNX_BIG,
157        res_size: u64,
158        a: *const VEC_ZNX_BIG,
159        a_size: u64,
160    );
161}