arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/spqlios/src/lib.rs
spqlios/src/lib.rsRaw
 1pub mod module;
 2pub mod scalar;
 3pub mod vector;
 4
 5#[allow(
 6    non_camel_case_types,
 7    non_snake_case,
 8    non_upper_case_globals,
 9    dead_code,
10    improper_ctypes
11)]
12pub mod bindings {
13    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
14}
15
16pub mod vec_znx_arithmetic;
17pub use vec_znx_arithmetic::*;
18pub mod vec_znx_big_arithmetic;
19pub use vec_znx_big_arithmetic::*;
20pub mod vec_znx_dft;
21pub use vec_znx_dft::*;
22pub mod scalar_vector_product;
23pub use scalar_vector_product::*;
24
25fn cast_mut_u64_to_mut_u8_slice(data: &mut [u64]) -> &mut [u8] {
26    let ptr: *mut u8 = data.as_mut_ptr() as *mut u8;
27    let len: usize = data.len() * std::mem::size_of::<u64>();
28    unsafe { std::slice::from_raw_parts_mut(ptr, len) }
29}
30
31fn cast_mut_u8_to_mut_i64_slice(data: &mut [u8]) -> &mut [i64] {
32    let ptr: *mut i64 = data.as_mut_ptr() as *mut i64;
33    let len: usize = data.len() / std::mem::size_of::<i64>();
34    unsafe { std::slice::from_raw_parts_mut(ptr, len) }
35}