fix to_i64 for modulus u64
Janmajaya Mall janmajayamall@protonmail.com
Mon, 20 May 2024 13:22:32 +0530
2 files changed,
4 insertions(+),
4 deletions(-)
M
src/backend.rs
→
src/backend.rs
@@ -56,14 +56,14 @@ // o.is_sign_negative() && o != 0.0; I'm ocnfused why didn't I simply check <
// 0.0? let v = v.round(); if v < 0.0 { - self - v.to_u64().unwrap() + self - v.abs().to_u64().unwrap() } else { v.to_u64().unwrap() } } fn map_element_from_i64(&self, v: i64) -> Self::Element { if v < 0 { - self - v.to_u64().unwrap() + self - v.abs().to_u64().unwrap() } else { v.to_u64().unwrap() }@@ -171,7 +171,7 @@ fn sub_mod_fast(&self, a: u64, b: u64) -> u64 {
debug_assert!(a < self.q); debug_assert!(b < self.q); - if a > b { + if a >= b { a - b } else { (self.q + a) - b
M
src/bool/evaluator.rs
→
src/bool/evaluator.rs
@@ -1927,7 +1927,7 @@
let mut bool_evaluator = BoolEvaluator::< Vec<Vec<u64>>, NttBackendU64, - WordSizeModulus<CiphertextModulus<u64>>, + ModularOpsU64<CiphertextModulus<u64>>, ModularOpsU64<CiphertextModulus<u64>>, >::new(SP_BOOL_PARAMS);