mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 05:06:44 +01:00
Added support for arbitrary extended LUT
This commit is contained in:
@@ -103,7 +103,7 @@ fn alloc_aligned_custom_u8(size: usize, align: usize) -> Vec<u8> {
|
||||
/// Size of T * size msut be a multiple of [DEFAULTALIGN].
|
||||
pub fn alloc_aligned_custom<T>(size: usize, align: usize) -> Vec<T> {
|
||||
assert_eq!(
|
||||
(size * size_of::<T>()) % (align/ size_of::<T>()),
|
||||
(size * size_of::<T>()) % (align / size_of::<T>()),
|
||||
0,
|
||||
"size={} must be a multiple of align={}",
|
||||
size,
|
||||
|
||||
@@ -93,7 +93,7 @@ impl<D: AsMut<[u8]> + AsRef<[u8]>> ScalarZnx<D> {
|
||||
pub fn fill_binary_block(&mut self, col: usize, block_size: usize, source: &mut Source) {
|
||||
assert!(self.n() % block_size == 0);
|
||||
let max_idx: u64 = (block_size + 1) as u64;
|
||||
let mask_idx: u64 = (1<<((u64::BITS - max_idx.leading_zeros())as u64)) - 1 ;
|
||||
let mask_idx: u64 = (1 << ((u64::BITS - max_idx.leading_zeros()) as u64)) - 1;
|
||||
for block in self.at_mut(col, 0).chunks_mut(block_size) {
|
||||
let idx: usize = source.next_u64n(max_idx, mask_idx) as usize;
|
||||
if idx != block_size {
|
||||
|
||||
@@ -243,13 +243,12 @@ fn normalize_tmp_bytes(n: usize) -> usize {
|
||||
n * std::mem::size_of::<i64>()
|
||||
}
|
||||
|
||||
impl<D: AsRef<[u8]> + AsMut<[u8]>> VecZnx<D>{
|
||||
pub fn normalize(&mut self, basek: usize, a_col: usize, tmp_bytes: &mut [u8]){
|
||||
impl<D: AsRef<[u8]> + AsMut<[u8]>> VecZnx<D> {
|
||||
pub fn normalize(&mut self, basek: usize, a_col: usize, tmp_bytes: &mut [u8]) {
|
||||
normalize(basek, self, a_col, tmp_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fn normalize<D: AsMut<[u8]> + AsRef<[u8]>>(basek: usize, a: &mut VecZnx<D>, a_col: usize, tmp_bytes: &mut [u8]) {
|
||||
let n: usize = a.n();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user