From 5a53d8dc8741f6ff4c09378c9f105d0755dbbff7 Mon Sep 17 00:00:00 2001 From: Pratyush Mishra Date: Tue, 17 Sep 2019 01:13:42 -0700 Subject: [PATCH] Fix tests --- algebra/src/biginteger/tests.rs | 12 ++++-- algebra/src/curves/tests.rs | 20 ++++----- algebra/src/fields/bls12_377/fq6.rs | 2 +- algebra/src/fields/bls12_377/tests.rs | 28 ++++++------- algebra/src/fields/bls12_381/fq12.rs | 2 +- algebra/src/fields/bls12_381/tests.rs | 59 +++++++++++++++------------ algebra/src/fields/tests.rs | 11 ++--- algebra/src/groups/tests.rs | 2 +- 8 files changed, 73 insertions(+), 63 deletions(-) diff --git a/algebra/src/biginteger/tests.rs b/algebra/src/biginteger/tests.rs index d57dc6e3e..364e29ad4 100644 --- a/algebra/src/biginteger/tests.rs +++ b/algebra/src/biginteger/tests.rs @@ -1,5 +1,7 @@ use crate::biginteger::BigInteger; -use rand; +use rand::SeedableRng; +use crate::UniformRand; +use rand_xorshift::XorShiftRng; fn biginteger_arithmetic_test(a: B, b: B, zero: B) { // zero == zero @@ -50,15 +52,17 @@ fn biginteger_bits_test() { fn biginteger_bytes_test() { let mut bytes = [0u8; 256]; - let x: B = rand::random(); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); + let x: B = UniformRand::rand(&mut rng); x.write(bytes.as_mut()).unwrap(); let y = B::read(bytes.as_ref()).unwrap(); assert_eq!(x, y); } fn test_biginteger(zero: B) { - let a: B = rand::random(); - let b: B = rand::random(); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); + let a: B = UniformRand::rand(&mut rng); + let b: B = UniformRand::rand(&mut rng); biginteger_arithmetic_test(a, b, zero); biginteger_bytes_test::(); biginteger_bits_test::(); diff --git a/algebra/src/curves/tests.rs b/algebra/src/curves/tests.rs index be34582ce..da555165d 100644 --- a/algebra/src/curves/tests.rs +++ b/algebra/src/curves/tests.rs @@ -9,7 +9,7 @@ use rand_xorshift::XorShiftRng; pub const ITERATIONS: usize = 10; fn random_addition_test() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let a = G::rand(&mut rng); @@ -88,7 +88,7 @@ fn random_addition_test() { } fn random_multiplication_test() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let mut a = G::rand(&mut rng); @@ -120,7 +120,7 @@ fn random_multiplication_test() { } fn random_doubling_test() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let mut a = G::rand(&mut rng); @@ -147,7 +147,7 @@ fn random_doubling_test() { } fn random_negation_test() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let r = G::rand(&mut rng); @@ -177,7 +177,7 @@ fn random_negation_test() { } fn random_transformation_test() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let g = G::rand(&mut rng); @@ -196,14 +196,14 @@ fn random_transformation_test() { assert!(!i.is_normalized()); } - use rand::distributions::{IndependentSample, Range}; - let between = Range::new(0, ITERATIONS); + use rand::distributions::{Distribution, Uniform}; + let between = Uniform::from(0..ITERATIONS); // Sprinkle in some normalized points for _ in 0..5 { - v[between.ind_sample(&mut rng)] = G::zero(); + v[between.sample(&mut rng)] = G::zero(); } for _ in 0..5 { - let s = between.ind_sample(&mut rng); + let s = between.sample(&mut rng); v[s] = v[s].into_affine().into_projective(); } @@ -222,7 +222,7 @@ fn random_transformation_test() { } pub fn curve_tests() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); // Negation edge case with zero. { diff --git a/algebra/src/fields/bls12_377/fq6.rs b/algebra/src/fields/bls12_377/fq6.rs index 75dc2df76..2f04fca7f 100644 --- a/algebra/src/fields/bls12_377/fq6.rs +++ b/algebra/src/fields/bls12_377/fq6.rs @@ -200,7 +200,7 @@ use rand_xorshift::XorShiftRng; #[test] fn test_fq2_mul_nonresidue() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let nqr = Fq2::new(Fq::zero(), Fq::one()); println!("One: {:?}", Fq::one()); diff --git a/algebra/src/fields/bls12_377/tests.rs b/algebra/src/fields/bls12_377/tests.rs index bb88d25f9..e519e710b 100644 --- a/algebra/src/fields/bls12_377/tests.rs +++ b/algebra/src/fields/bls12_377/tests.rs @@ -123,7 +123,7 @@ fn test_fq_repr_num_bits() { fn test_fq_add_assign() { // Test associativity - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Generate a, b, c and ensure (a + b) + c == a + (b + c). @@ -147,7 +147,7 @@ fn test_fq_add_assign() { #[test] fn test_fq_sub_assign() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure that (a - b) + (b - a) = 0. @@ -167,7 +167,7 @@ fn test_fq_sub_assign() { #[test] fn test_fq_mul_assign() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000000 { // Ensure that (a * b) * c = a * (b * c) @@ -212,7 +212,7 @@ fn test_fq_mul_assign() { #[test] fn test_fq_squaring() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000000 { // Ensure that (a * a) = a^2 @@ -232,7 +232,7 @@ fn test_fq_squaring() { fn test_fq_inverse() { assert!(Fq::zero().inverse().is_none()); - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let one = Fq::one(); @@ -247,7 +247,7 @@ fn test_fq_inverse() { #[test] fn test_fq_double_in_place() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure doubling a is equivalent to adding a to itself. @@ -267,7 +267,7 @@ fn test_fq_negate() { assert!(a.is_zero()); } - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure (a - (-a)) = 0. @@ -281,7 +281,7 @@ fn test_fq_negate() { #[test] fn test_fq_pow() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for i in 0..1000 { // Exponentiate by various small numbers and ensure it consists with repeated @@ -305,7 +305,7 @@ fn test_fq_pow() { #[test] fn test_fq_sqrt() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); assert_eq!(Fq::zero().sqrt().unwrap(), Fq::zero()); @@ -428,7 +428,7 @@ fn test_fq2_legendre() { #[test] fn test_fq2_mul_nonresidue() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let nqr = Fq2::new(Fq::zero(), Fq::one()); @@ -448,7 +448,7 @@ fn test_fq2_mul_nonresidue() { #[test] fn test_fq6_mul_by_1() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c1 = Fq2::rand(&mut rng); @@ -464,7 +464,7 @@ fn test_fq6_mul_by_1() { #[test] fn test_fq6_mul_by_01() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c0 = Fq2::rand(&mut rng); @@ -481,7 +481,7 @@ fn test_fq6_mul_by_01() { #[test] fn test_fq12_mul_by_014() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c0 = Fq2::rand(&mut rng); @@ -502,7 +502,7 @@ fn test_fq12_mul_by_014() { #[test] fn test_fq12_mul_by_034() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c0 = Fq2::rand(&mut rng); diff --git a/algebra/src/fields/bls12_381/fq12.rs b/algebra/src/fields/bls12_381/fq12.rs index 8e07aabf1..fd32a2c18 100644 --- a/algebra/src/fields/bls12_381/fq12.rs +++ b/algebra/src/fields/bls12_381/fq12.rs @@ -218,7 +218,7 @@ use rand_xorshift::XorShiftRng; #[test] fn test_fq6_mul_nonresidue() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let nqr = Fq6::new(Fq2::zero(), Fq2::one(), Fq2::zero()); diff --git a/algebra/src/fields/bls12_381/tests.rs b/algebra/src/fields/bls12_381/tests.rs index f4a75490e..7b946ac84 100644 --- a/algebra/src/fields/bls12_381/tests.rs +++ b/algebra/src/fields/bls12_381/tests.rs @@ -24,9 +24,10 @@ pub(crate) const ITERATIONS: usize = 5; fn test_bls12_381_fr() { use crate::fields::bls12_381::Fr; + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { - let a: Fr = rand::random(); - let b: Fr = rand::random(); + let a: Fr = UniformRand::rand(&mut rng); + let b: Fr = UniformRand::rand(&mut rng); field_test(a, b); primefield_test::(); sqrt_field_test(b); @@ -37,9 +38,10 @@ fn test_bls12_381_fr() { fn test_bls12_381_fq() { use crate::fields::bls12_381::Fq; + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { - let a: Fq = rand::random(); - let b: Fq = rand::random(); + let a: Fq = UniformRand::rand(&mut rng); + let b: Fq = UniformRand::rand(&mut rng); field_test(a, b); primefield_test::(); sqrt_field_test(a); @@ -50,9 +52,10 @@ fn test_bls12_381_fq() { fn test_bls12_381_fq2() { use crate::fields::bls12_381::{Fq, Fq2}; + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { - let a: Fq2 = rand::random(); - let b: Fq2 = rand::random(); + let a: Fq2 = UniformRand::rand(&mut rng); + let b: Fq2 = UniformRand::rand(&mut rng); field_test(a, b); sqrt_field_test(a); } @@ -63,9 +66,10 @@ fn test_bls12_381_fq2() { fn test_bls12_381_fq6() { use crate::fields::bls12_381::{Fq, Fq6}; + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { - let g: Fq6 = rand::random(); - let h: Fq6 = rand::random(); + let g: Fq6 = UniformRand::rand(&mut rng); + let h: Fq6 = UniformRand::rand(&mut rng); field_test(g, h); } frobenius_test::(Fq::characteristic(), 13); @@ -75,9 +79,10 @@ fn test_bls12_381_fq6() { fn test_bls12_381_fq12() { use crate::fields::bls12_381::{Fq, Fq12}; + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { - let g: Fq12 = rand::random(); - let h: Fq12 = rand::random(); + let g: Fq12 = UniformRand::rand(&mut rng); + let h: Fq12 = UniformRand::rand(&mut rng); field_test(g, h); } frobenius_test::(Fq::characteristic(), 13); @@ -1016,7 +1021,7 @@ fn test_fq_repr_num_bits() { #[test] fn test_fq_repr_sub_noborrow() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let mut t = BigInteger384([ 0x827a4a08041ebd9, @@ -1103,7 +1108,7 @@ fn test_fq_repr_sub_noborrow() { #[test] fn test_fq_repr_add_nocarry() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let mut t = BigInteger384([ 0x827a4a08041ebd9, @@ -1213,7 +1218,7 @@ fn test_fq_is_valid() { ])) .is_valid()); - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let a = Fq::rand(&mut rng); @@ -1326,7 +1331,7 @@ fn test_fq_add_assign() { // Test associativity - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Generate a, b, c and ensure (a + b) + c == a + (b + c). @@ -1436,7 +1441,7 @@ fn test_fq_sub_assign() { ); } - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure that (a - b) + (b - a) = 0. @@ -1483,7 +1488,7 @@ fn test_fq_mul_assign() { ])) ); - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000000 { // Ensure that (a * b) * c = a * (b * c) @@ -1550,7 +1555,7 @@ fn test_fq_squaring() { ])) ); - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000000 { // Ensure that (a * a) = a^2 @@ -1570,7 +1575,7 @@ fn test_fq_squaring() { fn test_fq_inverse() { assert!(Fq::zero().inverse().is_none()); - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let one = Fq::one(); @@ -1585,7 +1590,7 @@ fn test_fq_inverse() { #[test] fn test_fq_double_in_place() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure doubling a is equivalent to adding a to itself. @@ -1605,7 +1610,7 @@ fn test_fq_negate() { assert!(a.is_zero()); } - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { // Ensure (a - (-a)) = 0. @@ -1619,7 +1624,7 @@ fn test_fq_negate() { #[test] fn test_fq_pow() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for i in 0..1000 { // Exponentiate by various small numbers and ensure it consists with repeated @@ -1643,7 +1648,7 @@ fn test_fq_pow() { #[test] fn test_fq_sqrt() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); assert_eq!(Fq::zero().sqrt().unwrap(), Fq::zero()); @@ -2287,7 +2292,7 @@ fn test_fq2_legendre() { #[test] fn test_fq2_mul_nonresidue() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let nqr = Fq2::new(Fq::one(), Fq::one()); @@ -2303,7 +2308,7 @@ fn test_fq2_mul_nonresidue() { #[test] fn test_fq6_mul_nonresidue() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let nqr = Fq6::new(Fq2::zero(), Fq2::one(), Fq2::zero()); @@ -2319,7 +2324,7 @@ fn test_fq6_mul_nonresidue() { #[test] fn test_fq6_mul_by_1() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c1 = Fq2::rand(&mut rng); @@ -2335,7 +2340,7 @@ fn test_fq6_mul_by_1() { #[test] fn test_fq6_mul_by_01() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c0 = Fq2::rand(&mut rng); @@ -2352,7 +2357,7 @@ fn test_fq6_mul_by_01() { #[test] fn test_fq12_mul_by_014() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..1000 { let c0 = Fq2::rand(&mut rng); diff --git a/algebra/src/fields/tests.rs b/algebra/src/fields/tests.rs index 495224914..6952e2f56 100644 --- a/algebra/src/fields/tests.rs +++ b/algebra/src/fields/tests.rs @@ -1,5 +1,6 @@ use crate::fields::{Field, LegendreSymbol, PrimeField, SquareRootField}; -use rand::{Rng, SeedableRng, XorShiftRng}; +use rand::{Rng, SeedableRng}; +use rand_xorshift::XorShiftRng; pub const ITERATIONS: u32 = 40; @@ -150,7 +151,7 @@ fn random_expansion_tests(rng: &mut R) { } fn random_field_tests() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); random_negation_tests::(&mut rng); random_addition_tests::(&mut rng); @@ -185,7 +186,7 @@ fn random_field_tests() { } fn random_sqrt_tests() { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let a = F::rand(&mut rng); @@ -229,7 +230,7 @@ pub fn from_str_test() { } { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let n: u64 = rng.gen(); @@ -331,7 +332,7 @@ pub fn sqrt_field_test(elem: F) { } pub fn frobenius_test>(characteristic: C, maxpower: usize) { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); for _ in 0..ITERATIONS { let a = F::rand(&mut rng); diff --git a/algebra/src/groups/tests.rs b/algebra/src/groups/tests.rs index bb4da67b2..38c548ce2 100644 --- a/algebra/src/groups/tests.rs +++ b/algebra/src/groups/tests.rs @@ -5,7 +5,7 @@ use rand::SeedableRng; use rand_xorshift::XorShiftRng; pub fn group_test(a: G, mut b: G) { - let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); let zero = G::zero(); let fr_zero = G::ScalarField::zero(); let fr_one = G::ScalarField::one();