From c748bbbda7b94fafaf957e39fe85ee80a26bf26b Mon Sep 17 00:00:00 2001 From: rickwebiii Date: Fri, 28 Feb 2025 12:50:28 -0800 Subject: [PATCH 1/3] Export OverlaySize trait --- sunscreen_tfhe/src/dst.rs | 3 +++ sunscreen_tfhe/src/lib.rs | 1 + 2 files changed, 4 insertions(+) diff --git a/sunscreen_tfhe/src/dst.rs b/sunscreen_tfhe/src/dst.rs index 2cd5a7b0e..caa563298 100644 --- a/sunscreen_tfhe/src/dst.rs +++ b/sunscreen_tfhe/src/dst.rs @@ -462,9 +462,12 @@ macro_rules! dst_iter { pub type NoWrapper = T; +/// Describes how large an entity will be for the given parameters. pub trait OverlaySize { + /// The inputs that determine this entity's size type Inputs: Copy + Clone; + /// Get the size of the entity. fn size(t: Self::Inputs) -> usize; } diff --git a/sunscreen_tfhe/src/lib.rs b/sunscreen_tfhe/src/lib.rs index 0370e1b86..8c3ec1111 100644 --- a/sunscreen_tfhe/src/lib.rs +++ b/sunscreen_tfhe/src/lib.rs @@ -5,6 +5,7 @@ #[macro_use] mod dst; +pub use dst::OverlaySize; /// Methods for iterating over data structures. pub(crate) mod iteration; From 08240edea34e03405bb9c872e084eb4de25d65f4 Mon Sep 17 00:00:00 2001 From: rickwebiii Date: Fri, 28 Feb 2025 12:55:36 -0800 Subject: [PATCH 2/3] Fix lint --- logproof/src/linear_relation.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logproof/src/linear_relation.rs b/logproof/src/linear_relation.rs index 7c45fb8b2..adb7b5158 100644 --- a/logproof/src/linear_relation.rs +++ b/logproof/src/linear_relation.rs @@ -1507,7 +1507,7 @@ mod test { assert_eq!(bit_vec.len(), 9 * vals.len()); let sign_extend = |mut x: u16| { - let sign = (x & 0x1 << 8) >> 8; + let sign = (x & (0x1 << 8)) >> 8; for i in 9..16 { x |= sign << i; From c0a21191275ca467b2690fd65fdb33efc3540c91 Mon Sep 17 00:00:00 2001 From: rickwebiii Date: Fri, 28 Feb 2025 13:02:47 -0800 Subject: [PATCH 3/3] Clippy --- sunscreen/src/types/bfv/fractional.rs | 2 +- sunscreen/src/types/bfv/signed.rs | 2 +- sunscreen/src/types/zkp/bfv_plaintext.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sunscreen/src/types/bfv/fractional.rs b/sunscreen/src/types/bfv/fractional.rs index c01e126b4..b8ed370d5 100644 --- a/sunscreen/src/types/bfv/fractional.rs +++ b/sunscreen/src/types/bfv/fractional.rs @@ -479,7 +479,7 @@ impl TryIntoPlaintext for Fractional { } for i in 0..f64::MANTISSA_DIGITS { - let bit_value = (mantissa & 0x1 << i) >> i; + let bit_value = (mantissa & (0x1 << i)) >> i; let bit_power = power - (f64::MANTISSA_DIGITS - i - 1) as i64; let coeff_index = if bit_power >= 0 { diff --git a/sunscreen/src/types/bfv/signed.rs b/sunscreen/src/types/bfv/signed.rs index 967cbc4fe..25feb1b6e 100644 --- a/sunscreen/src/types/bfv/signed.rs +++ b/sunscreen/src/types/bfv/signed.rs @@ -93,7 +93,7 @@ impl TryIntoPlaintext for Signed { seal_plaintext.resize(sig_bits); for i in 0..sig_bits { - let bit_value = (signed_val & 0x1 << i) >> i; + let bit_value = (signed_val & (0x1 << i)) >> i; let coeff_value = if self.val < 0 { bit_value * (params.plain_modulus - bit_value) diff --git a/sunscreen/src/types/zkp/bfv_plaintext.rs b/sunscreen/src/types/zkp/bfv_plaintext.rs index ba52543d1..a42dc08e2 100644 --- a/sunscreen/src/types/zkp/bfv_plaintext.rs +++ b/sunscreen/src/types/zkp/bfv_plaintext.rs @@ -371,7 +371,7 @@ mod tests { let mut signed_encoding = [0; ::DEGREE_BOUND]; let abs_val = val.unsigned_abs(); for (i, c) in signed_encoding.iter_mut().take(64).enumerate() { - let bit = (abs_val & 0x1 << i) >> i; + let bit = (abs_val & (0x1 << i)) >> i; *c = if val.is_negative() { bit * (plain_modulus - bit) } else {