From 3587c563dc0ba2624917a82ec76aebda7d8009a0 Mon Sep 17 00:00:00 2001 From: Janmajaya Mall Date: Wed, 24 Jul 2024 15:46:25 -0700 Subject: [PATCH] add fhebool example + fix BatchedFheBool's SampleExtract infinite loop --- src/bool/mod.rs | 13 ++++++++----- src/bool/ni_mp_api.rs | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/bool/mod.rs b/src/bool/mod.rs index 7007526..6ba75f5 100644 --- a/src/bool/mod.rs +++ b/src/bool/mod.rs @@ -267,17 +267,19 @@ mod common_mp_enc_dec { { fn extract_all(&self) -> Vec> { if self.data.len() > 0 { - let ring_size = self.data[0].dimension().0; + let ring_size = self.data[0].dimension().1; - let index = 0; + let mut index = 0; let mut out = Vec::with_capacity(self.count); while index < self.count { let row = index % ring_size; let col = index / ring_size; + out.push(FheBool { data: SampleExtractor::extract_at(&self.data[col], row), }); + index += 1; } out @@ -288,7 +290,7 @@ mod common_mp_enc_dec { fn extract_at(&self, index: usize) -> FheBool { assert!(self.count > index); - let ring_size = self.data[0].dimension().0; + let ring_size = self.data[0].dimension().1; let row = index % ring_size; let col = index / ring_size; @@ -299,9 +301,9 @@ mod common_mp_enc_dec { fn extract_many(&self, how_many: usize) -> Vec> { assert!(self.count >= how_many); - let ring_size = self.data[0].dimension().0; + let ring_size = self.data[0].dimension().1; - let index = 0; + let mut index = 0; let mut out = Vec::with_capacity(self.count); while index < how_many { @@ -310,6 +312,7 @@ mod common_mp_enc_dec { out.push(FheBool { data: SampleExtractor::extract_at(&self.data[col], row), }); + index += 1; } out diff --git a/src/bool/ni_mp_api.rs b/src/bool/ni_mp_api.rs index c3071dd..ed059fa 100644 --- a/src/bool/ni_mp_api.rs +++ b/src/bool/ni_mp_api.rs @@ -36,6 +36,7 @@ static BOOL_SERVER_KEY: OnceLock> = OnceLock::new(); +#[derive(Copy, Clone)] pub enum ParameterSelector { NonInteractiveLTE2Party, NonInteractiveLTE4Party,