Browse Source

fix to_i64 for modulus u64

par-agg-key-shares
Janmajaya Mall 11 months ago
parent
commit
b8fdf4552e
2 changed files with 4 additions and 4 deletions
  1. +3
    -3
      src/backend.rs
  2. +1
    -1
      src/bool/evaluator.rs

+ 3
- 3
src/backend.rs

@ -56,14 +56,14 @@ impl Modulus for u64 {
// 0.0? // 0.0?
let v = v.round(); let v = v.round();
if v < 0.0 { if v < 0.0 {
self - v.to_u64().unwrap()
self - v.abs().to_u64().unwrap()
} else { } else {
v.to_u64().unwrap() v.to_u64().unwrap()
} }
} }
fn map_element_from_i64(&self, v: i64) -> Self::Element { fn map_element_from_i64(&self, v: i64) -> Self::Element {
if v < 0 { if v < 0 {
self - v.to_u64().unwrap()
self - v.abs().to_u64().unwrap()
} else { } else {
v.to_u64().unwrap() v.to_u64().unwrap()
} }
@ -171,7 +171,7 @@ impl ModularOpsU64 {
debug_assert!(a < self.q); debug_assert!(a < self.q);
debug_assert!(b < self.q); debug_assert!(b < self.q);
if a > b {
if a >= b {
a - b a - b
} else { } else {
(self.q + a) - b (self.q + a) - b

+ 1
- 1
src/bool/evaluator.rs

@ -1927,7 +1927,7 @@ mod tests {
let mut bool_evaluator = BoolEvaluator::< let mut bool_evaluator = BoolEvaluator::<
Vec<Vec<u64>>, Vec<Vec<u64>>,
NttBackendU64, NttBackendU64,
WordSizeModulus<CiphertextModulus<u64>>,
ModularOpsU64<CiphertextModulus<u64>>,
ModularOpsU64<CiphertextModulus<u64>>, ModularOpsU64<CiphertextModulus<u64>>,
>::new(SP_BOOL_PARAMS); >::new(SP_BOOL_PARAMS);

Loading…
Cancel
Save