Added VecZnxBorrow

This commit is contained in:
Jean-Philippe Bossuat
2025-02-14 18:26:54 +01:00
parent 68e61dc0e3
commit 67d8fd31b7
12 changed files with 605 additions and 595 deletions

View File

@@ -1,3 +1,4 @@
pub mod encoding;
#[allow(
non_camel_case_types,
non_snake_case,
@@ -5,75 +6,47 @@
dead_code,
improper_ctypes
)]
// Other modules and exports
pub mod ffi;
pub mod module;
#[allow(unused_imports)]
pub use module::*;
pub mod vec_znx;
#[allow(unused_imports)]
pub use vec_znx::*;
pub mod vec_znx_big;
#[allow(unused_imports)]
pub use vec_znx_big::*;
pub mod vec_znx_dft;
#[allow(unused_imports)]
pub use vec_znx_dft::*;
pub mod svp;
#[allow(unused_imports)]
pub use svp::*;
pub mod vmp;
#[allow(unused_imports)]
pub use vmp::*;
pub mod sampling;
#[allow(unused_imports)]
pub use sampling::*;
pub mod encoding;
#[allow(unused_imports)]
pub use encoding::*;
pub mod infos;
#[allow(unused_imports)]
pub use infos::*;
pub mod free;
#[allow(unused_imports)]
pub mod infos;
pub mod module;
pub mod sampling;
pub mod svp;
pub mod vec_znx;
pub mod vec_znx_big;
pub mod vec_znx_dft;
pub mod vmp;
pub use encoding::*;
pub use free::*;
pub use infos::*;
pub use module::*;
pub use sampling::*;
pub use svp::*;
pub use vec_znx::*;
pub use vec_znx_big::*;
pub use vec_znx_dft::*;
pub use vmp::*;
pub const GALOISGENERATOR: u64 = 5;
#[allow(dead_code)]
pub fn cast_mut_u64_to_mut_u8_slice(data: &mut [u64]) -> &mut [u8] {
let ptr: *mut u8 = data.as_mut_ptr() as *mut u8;
let len: usize = data.len() * std::mem::size_of::<u64>();
unsafe { std::slice::from_raw_parts_mut(ptr, len) }
fn is_aligned<T>(ptr: *const T, align: usize) -> bool {
(ptr as usize) % align == 0
}
pub fn cast_mut_u8_to_mut_i64_slice(data: &mut [u8]) -> &mut [i64] {
let ptr: *mut i64 = data.as_mut_ptr() as *mut i64;
let len: usize = data.len() / std::mem::size_of::<i64>();
unsafe { std::slice::from_raw_parts_mut(ptr, len) }
}
pub fn cast_mut_u8_to_mut_f64_slice(data: &mut [u8]) -> &mut [f64] {
let ptr: *mut f64 = data.as_mut_ptr() as *mut f64;
let len: usize = data.len() / std::mem::size_of::<f64>();
unsafe { std::slice::from_raw_parts_mut(ptr, len) }
}
pub fn cast_u8_to_f64_slice(data: &mut [u8]) -> &[f64] {
let ptr: *const f64 = data.as_mut_ptr() as *const f64;
let len: usize = data.len() / std::mem::size_of::<f64>();
pub fn cast<T, V>(data: &[T]) -> &[V] {
let ptr: *const V = data.as_ptr() as *const V;
let len: usize = data.len() / std::mem::size_of::<V>();
unsafe { std::slice::from_raw_parts(ptr, len) }
}
pub fn cast_mut<T, V>(data: &[T]) -> &mut [V] {
let ptr: *mut V = data.as_ptr() as *mut V;
let len: usize = data.len() / std::mem::size_of::<V>();
unsafe { std::slice::from_raw_parts_mut(ptr, len) }
}
use std::alloc::{alloc, Layout};
pub fn alloc_aligned_u8(size: usize, align: usize) -> Vec<u8> {
@@ -116,8 +89,10 @@ pub fn alloc_aligned<T>(size: usize, align: usize) -> Vec<T> {
unsafe { Vec::from_raw_parts(ptr, len, cap) }
}
fn alias_mut_slice_to_vec<T>(slice: &mut [T]) -> Vec<T> {
let ptr = slice.as_mut_ptr();
let len = slice.len();
unsafe { Vec::from_raw_parts(ptr, len, len) }
fn alias_mut_slice_to_vec<T>(slice: &[T]) -> Vec<T> {
unsafe {
let ptr: *mut T = slice.as_ptr() as *mut T;
let len: usize = slice.len();
Vec::from_raw_parts(ptr, len, len)
}
}