upgrade rand,rand_distr deps
jump to
@@ -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"
@@ -139,8 +139,8 @@ assert_eq!(v, v2);
let v_inv = NTT::<Q, N>::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::<Q, N>::rand_f64(&mut rng, uniform_distr)?; // let a = PR::<Q, N>::new_from_u64(vec![36, 21, 9, 19]);@@ -185,7 +185,7 @@ const N: usize = 4;
// let primitive = NTT::<Q, N>::get_primitive_root_of_unity((2*N) as u64)?; let ntt = NTT::<Q, N>::new()?; - let rng = rand::thread_rng(); + let rng = rand::rng(); let a = Rq::<Q, { 2 * N }>::rand_f64(rng, Uniform::new(0_f64, (Q - 1) as f64))?; let a = a.coeffs; dbg!(&a);
@@ -220,9 +220,9 @@ let q: u64 = 2u64.pow(16) + 1;
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);
@@ -173,8 +173,8 @@ const N: usize = 512;
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<Q>; N] = array::from_fn(|_| Zq::from_f64(dist.sample(&mut rng)));
@@ -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};
@@ -2,7 +2,7 @@ //! Polynomial ring Z[X]/(X^N+1)
//! 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};
@@ -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};
@@ -8,7 +8,7 @@ //! u64, we fit it into the `Ring` trait (from ring.rs) so that we can compose
//! the 𝕋_<N,q> 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};
@@ -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 @@
#[cfg(test)] mod tests { use super::*; - use rand::distributions::Standard; + use rand::distr::StandardUniform; fn recompose(d: Vec<T64>) -> T64 { T64(d.iter().fold(0u64, |acc, &b| (acc << 1) | b.0))@@ -181,9 +181,9 @@ let param = RingParam {
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); }
@@ -2,7 +2,7 @@ //! This file implements the struct for an Tuple of Ring Rq elements and its
//! 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};
@@ -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 @@
#[cfg(test)] mod tests { use super::*; - use rand::distributions::Uniform; + use rand::distr::Uniform; #[test] fn exp() {@@ -393,8 +393,8 @@ let q: u64 = 5u64.pow(3);
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));
@@ -121,7 +121,7 @@ pub fn new_key(mut rng: impl Rng, param: &Param) -> Result<(SecretKey, PublicKey)> {
// 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 @@ // compute its NTT
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 @@ debug_assert_eq!(param.ring, pk.0.param);
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 @@ // TODO review using Xi' instead of Xi
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<PQ, N> = RLK::<PQ, N>(-(&a * &s + e) + (s * s) * P, a.clone());@@ -274,7 +274,7 @@
#[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*;@@ -289,12 +289,12 @@ t: 32, // plaintext modulus
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 @@ t: 32, // plaintext modulus
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 @@ t: 8, // plaintext modulus
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 @@ const P: u64 = Q * Q;
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 @@ ring: RingParam { q, n: 16 },
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 @@ t: 2, // plaintext modulus
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())?;
@@ -159,11 +159,11 @@ const N: usize = 32;
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<C<f64>> = std::iter::repeat_with(|| { - C::<f64>::new(rng.gen_range(0..T) as f64, rng.gen_range(0..T) as f64) + C::<f64>::new(rng.random_range(0..T) as f64, rng.random_range(0..T) as f64) }) .take(N / 2) .collect();
@@ -46,7 +46,7 @@ /// generate a new key pair (privK, pubK)
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 @@ pk: &PublicKey,
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 @@ };
let scale_factor_u64 = 512_u64; // delta let scale_factor = C::<f64>::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 @@
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 @@ t,
}; let scale_factor = C::<f64>::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 @@ t,
}; let scale_factor = C::<f64>::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 @@ t,
}; let scale_factor = C::<f64>::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);
@@ -82,7 +82,7 @@
#[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 @@
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::<Rq>::new_key(&mut rng, ¶m)?;
@@ -74,13 +74,13 @@ Self(TR::zero(k, ¶m), p)
} pub fn new_key(mut rng: impl Rng, param: &Param) -> Result<(SecretKey<R>, PublicKey<R>)> { - 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<R> = TR::rand(&mut rng, Xi_key, param.k, ¶m.ring); let a: TR<R> = 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 @@ let Xi_err = Normal::new(0_f64, param.err_sigma)?;
let a: TR<R> = 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 @@ param: &Param,
sk: &SecretKey<R>, m: &R, // already scaled ) -> Result<Self> { - 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<R> = TR::rand(&mut rng, Xi_key, param.k, ¶m.ring);@@ -158,7 +158,7 @@ param: &Param,
pk: &PublicKey<R>, m: &R, // already scaled ) -> Result<Self> { - 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 @@
#[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*;@@ -336,8 +336,8 @@ t: 32, // plaintext modulus
}; type S = GLWE<Rq>; - 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 @@ t: 32, // plaintext modulus
}; type S = GLWE<Tn>; - 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 @@ t: 20, // plaintext modulus
}; type S = GLWE<Rq>; - 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 @@ t: 32, // plaintext modulus
}; type S = GLWE<Rq>; - 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 @@ t: 4, // plaintext modulus
}; type S = GLWE<Rq>; - 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 @@ let new_q: u64 = 2u64.pow(8) + 1;
// note: wip, Q and P chosen so that P/Q is an integer type S = GLWE<Rq>; - 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 @@
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 //
@@ -151,7 +151,7 @@
#[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*; #[test]@@ -166,8 +166,8 @@
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)?;
@@ -196,7 +196,7 @@
#[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*;@@ -209,8 +209,8 @@ k: 16,
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 @@ k: 16,
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 @@ k: 16,
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 @@ k: 16,
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 @@ k: 16,
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)?;
@@ -66,7 +66,7 @@
#[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 @@ };
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 @@ };
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 @@
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)?;
@@ -107,7 +107,7 @@
#[cfg(test)] mod tests { use anyhow::Result; - use rand::distributions::Uniform; + use rand::distr::Uniform; use super::*;@@ -123,8 +123,8 @@
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 @@ let beta: u32 = 2;
// 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)?;
@@ -281,7 +281,7 @@
#[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 @@ k: 16,
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 @@ k: 16,
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 @@ k: 16,
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 @@ k: 16,
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 @@
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 @@ },
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 @@ let start = Instant::now();
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