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}