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; 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 { 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;