diff --git a/Cargo.toml b/Cargo.toml index 32238ca..646cc5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,6 @@ resolver = "2" [workspace.dependencies] anyhow = "1.0.56" -rand = "0.8.5" -rand_distr = "0.4.3" +rand = "0.9.2" +rand_distr = "0.5.1" itertools = "0.14.0" diff --git a/README.md b/README.md index 7cea5d4..aea73b3 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ let param = Param { t: 128, // plaintext modulus }; -let mut rng = rand::thread_rng(); +let mut rng = rand::rng(); let msg_dist = Uniform::new(0_u64, param.t); let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; diff --git a/arith/src/naive_ntt.rs b/arith/src/naive_ntt.rs index 231ea1a..938b9a2 100644 --- a/arith/src/naive_ntt.rs +++ b/arith/src/naive_ntt.rs @@ -139,8 +139,8 @@ mod tests { let v_inv = NTT::::invert_vandermonde(&v); - let mut rng = rand::thread_rng(); - let uniform_distr = Uniform::new(0_f64, Q as f64); + let mut rng = rand::rng(); + let uniform_distr = Uniform::new(0_f64, Q as f64)?; let a = Rq::::rand_f64(&mut rng, uniform_distr)?; // let a = PR::::new_from_u64(vec![36, 21, 9, 19]); @@ -185,7 +185,7 @@ mod tests { // let primitive = NTT::::get_primitive_root_of_unity((2*N) as u64)?; let ntt = NTT::::new()?; - let rng = rand::thread_rng(); + let rng = rand::rng(); let a = Rq::::rand_f64(rng, Uniform::new(0_f64, (Q - 1) as f64))?; let a = a.coeffs; dbg!(&a); diff --git a/arith/src/ntt.rs b/arith/src/ntt.rs index 890f8ed..34ff171 100644 --- a/arith/src/ntt.rs +++ b/arith/src/ntt.rs @@ -220,9 +220,9 @@ mod tests { let n: usize = 512; let param = RingParam { q, n }; - use rand::distributions::Uniform; - let mut rng = rand::thread_rng(); - let dist = Uniform::new(0_f64, q as f64); + use rand::distr::Uniform; + let mut rng = rand::rng(); + let dist = Uniform::new(0_f64, q as f64)?; for _ in 0..1000 { let a: Rq = Rq::rand(&mut rng, dist, ¶m); diff --git a/arith/src/ntt_fixedsize.rs b/arith/src/ntt_fixedsize.rs index 90b8d78..88fdb1c 100644 --- a/arith/src/ntt_fixedsize.rs +++ b/arith/src/ntt_fixedsize.rs @@ -173,8 +173,8 @@ mod tests { use rand::distributions::Distribution; use rand::distributions::Uniform; - let mut rng = rand::thread_rng(); - let dist = Uniform::new(0_f64, Q as f64); + let mut rng = rand::rng(); + let dist = Uniform::new(0_f64, Q as f64)?; for _ in 0..100 { let a: [Zq; N] = array::from_fn(|_| Zq::from_f64(dist.sample(&mut rng))); diff --git a/arith/src/ring.rs b/arith/src/ring.rs index 3f39f1e..f911ffb 100644 --- a/arith/src/ring.rs +++ b/arith/src/ring.rs @@ -1,4 +1,4 @@ -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::fmt::Debug; use std::iter::Sum; use std::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign}; diff --git a/arith/src/ring_n.rs b/arith/src/ring_n.rs index 67eb17f..0384c58 100644 --- a/arith/src/ring_n.rs +++ b/arith/src/ring_n.rs @@ -2,7 +2,7 @@ //! use itertools::zip_eq; -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::fmt; use std::iter::Sum; use std::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign}; diff --git a/arith/src/ring_nq.rs b/arith/src/ring_nq.rs index d51c1c2..6aa7631 100644 --- a/arith/src/ring_nq.rs +++ b/arith/src/ring_nq.rs @@ -3,7 +3,7 @@ use anyhow::{anyhow, Result}; use itertools::zip_eq; -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::fmt; use std::iter::Sum; use std::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign}; diff --git a/arith/src/ring_torus.rs b/arith/src/ring_torus.rs index 7f5d756..f5c35ad 100644 --- a/arith/src/ring_torus.rs +++ b/arith/src/ring_torus.rs @@ -8,7 +8,7 @@ //! the 𝕋_ implementation with the other objects from the code. use itertools::zip_eq; -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::iter::Sum; use std::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign}; diff --git a/arith/src/torus.rs b/arith/src/torus.rs index f50f3b6..5acb102 100644 --- a/arith/src/torus.rs +++ b/arith/src/torus.rs @@ -1,4 +1,4 @@ -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::{ iter::Sum, ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign}, @@ -155,7 +155,7 @@ impl Mul<&u64> for &T64 { #[cfg(test)] mod tests { use super::*; - use rand::distributions::Standard; + use rand::distr::StandardUniform; fn recompose(d: Vec) -> T64 { T64(d.iter().fold(0u64, |acc, &b| (acc << 1) | b.0)) @@ -181,9 +181,9 @@ mod tests { q: u64::MAX, // WIP n: 1, }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..1000 { - let x = T64::rand(&mut rng, Standard, ¶m); + let x = T64::rand(&mut rng, StandardUniform, ¶m); let d = x.decompose(beta, l); assert_eq!(recompose(d), x); } diff --git a/arith/src/tuple_ring.rs b/arith/src/tuple_ring.rs index b468913..55a2bba 100644 --- a/arith/src/tuple_ring.rs +++ b/arith/src/tuple_ring.rs @@ -2,7 +2,7 @@ //! operations, which are performed element-wise. use itertools::zip_eq; -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::ops::{Add, Mul, Neg, Sub}; use crate::{Ring, RingParam}; diff --git a/arith/src/zq.rs b/arith/src/zq.rs index 392f1d5..786f60c 100644 --- a/arith/src/zq.rs +++ b/arith/src/zq.rs @@ -1,4 +1,4 @@ -use rand::{distributions::Distribution, Rng}; +use rand::{distr::Distribution, Rng}; use std::fmt; use std::ops::{Add, AddAssign, Div, Mul, Neg, Sub, SubAssign}; @@ -350,7 +350,7 @@ impl fmt::Debug for Zq { #[cfg(test)] mod tests { use super::*; - use rand::distributions::Uniform; + use rand::distr::Uniform; #[test] fn exp() { @@ -393,8 +393,8 @@ mod tests { let beta: u32 = 5; let l: u32 = 3; - let dist = Uniform::new(0_u64, q); - let mut rng = rand::thread_rng(); + let dist = Uniform::new(0_u64, q).unwrap(); + let mut rng = rand::rng(); for _ in 0..1000 { let x = Zq::from_u64(q, dist.sample(&mut rng)); diff --git a/bfv/src/lib.rs b/bfv/src/lib.rs index abb7b88..e1f8a58 100644 --- a/bfv/src/lib.rs +++ b/bfv/src/lib.rs @@ -121,7 +121,7 @@ impl BFV { // WIP: review probabilities // let Xi_key = Uniform::new(-1_f64, 1_f64); - let Xi_key = Uniform::new(0_u64, 2_u64); + let Xi_key = Uniform::new(0_u64, 2_u64)?; let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; // secret key @@ -132,7 +132,7 @@ impl BFV { s.compute_evals(); // pk = (-a * s + e, a) - let a = Rq::rand_u64(&mut rng, Uniform::new(0_u64, param.ring.q), ¶m.ring)?; + let a = Rq::rand_u64(&mut rng, Uniform::new(0_u64, param.ring.q)?, ¶m.ring)?; let e = Rq::rand_f64(&mut rng, Xi_err, ¶m.ring)?; let pk: PublicKey = PublicKey(&(&(-a.clone()) * &s) + &e, a.clone()); // TODO rm clones Ok((SecretKey(s), pk)) @@ -145,7 +145,7 @@ impl BFV { debug_assert_eq!(param.t, m.param.q); debug_assert_eq!(param.ring.n, m.param.n); - let Xi_key = Uniform::new(-1_f64, 1_f64); + let Xi_key = Uniform::new(-1_f64, 1_f64)?; // let Xi_key = Uniform::new(0_u64, 2_u64); let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; @@ -210,7 +210,7 @@ impl BFV { let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; // let Xi_err = Normal::new(0_f64, 0.0)?; let s = s.0.remodule(pq); - let a = Rq::rand_u64(&mut rng, Uniform::new(0_u64, pq), &rlk_param)?; + let a = Rq::rand_u64(&mut rng, Uniform::new(0_u64, pq)?, &rlk_param)?; let e = Rq::rand_f64(&mut rng, Xi_err, &rlk_param)?; // let rlk: RLK = RLK::(-(&a * &s + e) + (s * s) * P, a.clone()); @@ -274,7 +274,7 @@ impl BFV { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; @@ -289,12 +289,12 @@ mod tests { p: 0, // unused in this test }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..100 { let (sk, pk) = BFV::new_key(&mut rng, ¶m)?; - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let c = BFV::encrypt(&mut rng, ¶m, &pk, &m)?; @@ -317,12 +317,12 @@ mod tests { p: 0, // unused in this test }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..100 { let (sk, pk) = BFV::new_key(&mut rng, ¶m)?; - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m1 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let m2 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; @@ -348,11 +348,11 @@ mod tests { p: q * q, }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let (sk, pk) = BFV::new_key(&mut rng, ¶m)?; - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m1 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let m2_const = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let c1 = BFV::encrypt(&mut rng, ¶m, &pk, &m1)?; @@ -389,7 +389,7 @@ mod tests { const PQ: u64 = P * Q; const DELTA: u64 = Q / T; // floor - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let Xi_key = Uniform::new(0_f64, 1_f64); let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; @@ -509,9 +509,9 @@ mod tests { t: 2, // plaintext modulus p: q * q, }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..1_000 { let m1 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let m2 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; @@ -563,8 +563,8 @@ mod tests { p: q * q, }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..1_000 { let m1 = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; diff --git a/ckks/src/encoder.rs b/ckks/src/encoder.rs index 9e46ed8..7360a54 100644 --- a/ckks/src/encoder.rs +++ b/ckks/src/encoder.rs @@ -159,11 +159,11 @@ mod tests { let n: usize = 32; let T = 128; // WIP - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..100 { let z: Vec> = std::iter::repeat_with(|| { - C::::new(rng.gen_range(0..T) as f64, rng.gen_range(0..T) as f64) + C::::new(rng.random_range(0..T) as f64, rng.random_range(0..T) as f64) }) .take(N / 2) .collect(); diff --git a/ckks/src/lib.rs b/ckks/src/lib.rs index 1fb8bf4..6a14254 100644 --- a/ckks/src/lib.rs +++ b/ckks/src/lib.rs @@ -46,7 +46,7 @@ impl CKKS { pub fn new_key(&self, mut rng: impl Rng) -> Result<(SecretKey, PublicKey)> { let param = &self.param; - let Xi_key = Uniform::new(-1_f64, 1_f64); + let Xi_key = Uniform::new(-1_f64, 1_f64)?; let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; let e = Rq::rand_f64(&mut rng, Xi_err, ¶m.ring)?; @@ -70,7 +70,7 @@ impl CKKS { m: &R, ) -> Result<(Rq, Rq)> { let param = self.param; - let Xi_key = Uniform::new(-1_f64, 1_f64); + let Xi_key = Uniform::new(-1_f64, 1_f64)?; let Xi_err = Normal::new(0_f64, ERR_SIGMA)?; let e_0 = Rq::rand_f64(&mut rng, Xi_err, ¶m.ring)?; @@ -134,7 +134,7 @@ mod tests { let scale_factor_u64 = 512_u64; // delta let scale_factor = C::::new(scale_factor_u64 as f64, 0.0); // delta - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..1000 { let ckks = CKKS::new(¶m, scale_factor); @@ -142,7 +142,7 @@ mod tests { let (sk, pk) = ckks.new_key(&mut rng)?; let m_raw: R = - Rq::rand_f64(&mut rng, Uniform::new(0_f64, t as f64), ¶m.ring)?.to_r(); + Rq::rand_f64(&mut rng, Uniform::new(0_f64, t as f64)?, ¶m.ring)?.to_r(); let m = &m_raw * &scale_factor_u64; let ct = ckks.encrypt(&mut rng, &pk, &m)?; @@ -171,7 +171,7 @@ mod tests { }; let scale_factor = C::::new(512.0, 0.0); // delta - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..1000 { let ckks = CKKS::new(¶m, scale_factor); @@ -220,7 +220,7 @@ mod tests { }; let scale_factor = C::::new(1024.0, 0.0); // delta - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..1000 { let ckks = CKKS::new(¶m, scale_factor); @@ -267,7 +267,7 @@ mod tests { }; let scale_factor = C::::new(1024.0, 0.0); // delta - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..1000 { let ckks = CKKS::new(¶m, scale_factor); diff --git a/gfhe/src/glev.rs b/gfhe/src/glev.rs index c6a9c05..d811bd7 100644 --- a/gfhe/src/glev.rs +++ b/gfhe/src/glev.rs @@ -82,7 +82,7 @@ impl Mul> for GLev { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; use arith::{RingParam, Rq}; @@ -103,8 +103,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 16; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = GLWE::::new_key(&mut rng, ¶m)?; diff --git a/gfhe/src/glwe.rs b/gfhe/src/glwe.rs index df3a830..5344f3d 100644 --- a/gfhe/src/glwe.rs +++ b/gfhe/src/glwe.rs @@ -74,13 +74,13 @@ impl GLWE { } pub fn new_key(mut rng: impl Rng, param: &Param) -> Result<(SecretKey, PublicKey)> { - let Xi_key = Uniform::new(0_f64, 2_f64); + let Xi_key = Uniform::new(0_f64, 2_f64)?; let Xi_err = Normal::new(0_f64, param.err_sigma)?; let s: TR = TR::rand(&mut rng, Xi_key, param.k, ¶m.ring); let a: TR = TR::rand( &mut rng, - Uniform::new(0_f64, param.ring.q as f64), + Uniform::new(0_f64, param.ring.q as f64)?, param.k, ¶m.ring, ); @@ -94,7 +94,7 @@ impl GLWE { let a: TR = TR::rand( &mut rng, - Uniform::new(0_f64, param.ring.q as f64), + Uniform::new(0_f64, param.ring.q as f64)?, param.k, ¶m.ring, ); @@ -143,7 +143,7 @@ impl GLWE { sk: &SecretKey, m: &R, // already scaled ) -> Result { - let Xi_key = Uniform::new(0_f64, 2_f64); + let Xi_key = Uniform::new(0_f64, 2_f64)?; let Xi_err = Normal::new(0_f64, param.err_sigma)?; let a: TR = TR::rand(&mut rng, Xi_key, param.k, ¶m.ring); @@ -158,7 +158,7 @@ impl GLWE { pk: &PublicKey, m: &R, // already scaled ) -> Result { - let Xi_key = Uniform::new(0_f64, 2_f64); + let Xi_key = Uniform::new(0_f64, 2_f64)?; let Xi_err = Normal::new(0_f64, param.err_sigma)?; let u: R = R::rand(&mut rng, Xi_key, ¶m.ring); @@ -319,7 +319,7 @@ impl Mul for GLWE { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; @@ -336,8 +336,8 @@ mod tests { }; type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -389,8 +389,8 @@ mod tests { }; type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_f64, param.t as f64); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_f64, param.t as f64)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -428,8 +428,8 @@ mod tests { }; type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -466,8 +466,8 @@ mod tests { }; type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -503,8 +503,8 @@ mod tests { }; type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -541,8 +541,8 @@ mod tests { // note: wip, Q and P chosen so that P/Q is an integer type S = GLWE; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = S::new_key(&mut rng, ¶m)?; @@ -593,14 +593,14 @@ mod tests { let beta: u32 = 2; let l: u32 = 16; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let (sk, pk) = S::new_key(&mut rng, ¶m)?; let (sk2, _) = S::new_key(&mut rng, ¶m)?; // ksk to switch from sk to sk2 let ksk = S::new_ksk(&mut rng, ¶m, beta, l, &sk, &sk2)?; - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let p = S::encode(¶m, &m); // plaintext // diff --git a/tfhe/src/tggsw.rs b/tfhe/src/tggsw.rs index bc2fda5..c88c6ea 100644 --- a/tfhe/src/tggsw.rs +++ b/tfhe/src/tggsw.rs @@ -151,7 +151,7 @@ impl Mul> for TGLev { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; #[test] @@ -166,8 +166,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 64; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..50 { let (sk, _) = TGLWE::new_key(&mut rng, ¶m)?; diff --git a/tfhe/src/tglwe.rs b/tfhe/src/tglwe.rs index ae4c97b..341001d 100644 --- a/tfhe/src/tglwe.rs +++ b/tfhe/src/tglwe.rs @@ -196,7 +196,7 @@ impl Mul for TGLWE { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; @@ -209,8 +209,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TGLWE::new_key(&mut rng, ¶m)?; @@ -244,8 +244,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TGLWE::new_key(&mut rng, ¶m)?; @@ -278,8 +278,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TGLWE::new_key(&mut rng, ¶m)?; @@ -311,8 +311,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TGLWE::new_key(&mut rng, ¶m)?; @@ -343,8 +343,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..20 { let (sk, pk) = TGLWE::new_key(&mut rng, ¶m)?; diff --git a/tfhe/src/tgsw.rs b/tfhe/src/tgsw.rs index 8e4eca0..41abf17 100644 --- a/tfhe/src/tgsw.rs +++ b/tfhe/src/tgsw.rs @@ -66,7 +66,7 @@ impl Mul for TGSW { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; use arith::{RingParam, Rq}; @@ -82,8 +82,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 16; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..50 { let (sk, _) = TLWE::new_key(&mut rng, ¶m)?; @@ -112,8 +112,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 64; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..50 { let (sk, _) = TLWE::new_key(&mut rng, ¶m)?; @@ -152,8 +152,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 64; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..50 { let (sk, _) = TLWE::new_key(&mut rng, ¶m)?; diff --git a/tfhe/src/tlev.rs b/tfhe/src/tlev.rs index b8a543f..22cc1a2 100644 --- a/tfhe/src/tlev.rs +++ b/tfhe/src/tlev.rs @@ -107,7 +107,7 @@ impl Mul> for TLev { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; @@ -123,8 +123,8 @@ mod tests { let beta: u32 = 2; let l: u32 = 16; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; @@ -155,8 +155,8 @@ mod tests { // let l: u32 = 16; let l: u32 = 64; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; diff --git a/tfhe/src/tlwe.rs b/tfhe/src/tlwe.rs index dac81ac..2cab925 100644 --- a/tfhe/src/tlwe.rs +++ b/tfhe/src/tlwe.rs @@ -281,7 +281,7 @@ impl Mul for TLWE { #[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use std::time::Instant; use super::*; @@ -295,8 +295,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; @@ -330,8 +330,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; @@ -364,8 +364,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; @@ -397,8 +397,8 @@ mod tests { t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); - let msg_dist = Uniform::new(0_u64, param.t); + let mut rng = rand::rng(); + let msg_dist = Uniform::new(0_u64, param.t)?; for _ in 0..200 { let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; @@ -432,14 +432,14 @@ mod tests { let beta: u32 = 2; let l: u32 = 64; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let (sk, pk) = TLWE::new_key(&mut rng, ¶m)?; let (sk2, _) = TLWE::new_key(&mut rng, ¶m)?; // ksk to switch from sk to sk2 let ksk = TLWE::new_ksk(&mut rng, ¶m, beta, l, &sk, &sk2)?; - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m = Rq::rand_u64(&mut rng, msg_dist, ¶m.pt())?; let p = TLWE::encode(¶m, &m); // plaintext @@ -473,7 +473,7 @@ mod tests { k: 1, t: 128, // plaintext modulus }; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let start = Instant::now(); let table: TGLWE = compute_lookup_table(¶m); @@ -486,7 +486,7 @@ mod tests { let btk = BootstrappingKey::from_sk(&mut rng, ¶m, &sk)?; println!("btk took: {:?}", start.elapsed()); - let msg_dist = Uniform::new(0_u64, param.t); + let msg_dist = Uniform::new(0_u64, param.t)?; let m = Rq::rand_u64(&mut rng, msg_dist, ¶m.lwe().pt())?; // q=t, n=1 let p = TLWE::encode(¶m.lwe(), &m); // plaintext