updated repo for publishing (#74)

This commit is contained in:
Jean-Philippe Bossuat
2025-08-17 14:57:39 +02:00
committed by GitHub
parent 0be569eca0
commit 62eb87cc07
244 changed files with 374 additions and 539 deletions

55
poulpy-core/src/utils.rs Normal file
View File

@@ -0,0 +1,55 @@
use crate::layouts::{GLWEPlaintext, Infos, LWEPlaintext};
use poulpy_backend::hal::layouts::{DataMut, DataRef};
use rug::Float;
impl<D: DataMut> GLWEPlaintext<D> {
pub fn encode_vec_i64(&mut self, data: &[i64], k: usize) {
let basek: usize = self.basek();
self.data
.encode_vec_i64(basek, 0, k, data, i64::BITS as usize);
}
pub fn encode_coeff_i64(&mut self, data: i64, k: usize, idx: usize) {
let basek: usize = self.basek();
self.data
.encode_coeff_i64(basek, 0, k, idx, data, i64::BITS as usize);
}
}
impl<D: DataRef> GLWEPlaintext<D> {
pub fn decode_vec_i64(&self, data: &mut [i64], k: usize) {
self.data.decode_vec_i64(self.basek(), 0, k, data);
}
pub fn decode_coeff_i64(&self, k: usize, idx: usize) -> i64 {
self.data.decode_coeff_i64(self.basek(), 0, k, idx)
}
pub fn decode_vec_float(&self, data: &mut [Float]) {
self.data.decode_vec_float(self.basek(), 0, data);
}
pub fn std(&self) -> f64 {
self.data.std(self.basek(), 0)
}
}
impl<D: DataMut> LWEPlaintext<D> {
pub fn encode_i64(&mut self, data: i64, k: usize) {
let basek: usize = self.basek();
self.data
.encode_coeff_i64(basek, 0, k, 0, data, i64::BITS as usize);
}
}
impl<D: DataRef> LWEPlaintext<D> {
pub fn decode_i64(&self, k: usize) -> i64 {
self.data.decode_coeff_i64(self.basek(), 0, k, 0)
}
pub fn decode_float(&self) -> Float {
let mut data: Vec<Float> = vec![Float::new(self.k() as u32)];
self.data.decode_vec_float(self.basek(), 0, &mut data);
data[0].clone()
}
}