1use crate::layouts::{GLWEPlaintext, Infos, LWEPlaintext};
2use poulpy_hal::layouts::{DataMut, DataRef};
3use rug::Float;
4
5impl<D: DataMut> GLWEPlaintext<D> {
6 pub fn encode_vec_i64(&mut self, data: &[i64], k: usize) {
7 let basek: usize = self.basek();
8 self.data
9 .encode_vec_i64(basek, 0, k, data, i64::BITS as usize);
10 }
11
12 pub fn encode_coeff_i64(&mut self, data: i64, k: usize, idx: usize) {
13 let basek: usize = self.basek();
14 self.data
15 .encode_coeff_i64(basek, 0, k, idx, data, i64::BITS as usize);
16 }
17}
18
19impl<D: DataRef> GLWEPlaintext<D> {
20 pub fn decode_vec_i64(&self, data: &mut [i64], k: usize) {
21 self.data.decode_vec_i64(self.basek(), 0, k, data);
22 }
23
24 pub fn decode_coeff_i64(&self, k: usize, idx: usize) -> i64 {
25 self.data.decode_coeff_i64(self.basek(), 0, k, idx)
26 }
27
28 pub fn decode_vec_float(&self, data: &mut [Float]) {
29 self.data.decode_vec_float(self.basek(), 0, data);
30 }
31
32 pub fn std(&self) -> f64 {
33 self.data.std(self.basek(), 0)
34 }
35}
36
37impl<D: DataMut> LWEPlaintext<D> {
38 pub fn encode_i64(&mut self, data: i64, k: usize) {
39 let basek: usize = self.basek();
40 self.data.encode_i64(basek, k, data, i64::BITS as usize);
41 }
42}
43
44impl<D: DataRef> LWEPlaintext<D> {
45 pub fn decode_i64(&self, k: usize) -> i64 {
46 self.data.decode_i64(self.basek(), k)
47 }
48
49 pub fn decode_float(&self) -> Float {
50 self.data.decode_float(self.basek())
51 }
52}