mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 21:26:41 +01:00
Added VecZnxBorrow
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user