staging_common/
test_helpers.rs1use ark_ec::{AffineRepr, CurveGroup};
2use ark_std::rand::Rng;
3use ark_std::UniformRand;
4use ark_std::vec::Vec;
5
6pub fn random_bitvec<R: Rng>(n: usize, density: f64, rng: &mut R) -> Vec<bool> {
7 (0..n)
8 .map(|_| rng.gen_bool(density))
9 .collect()
10}
11
12pub fn random_vec<X: UniformRand, R: Rng>(n: usize, rng: &mut R) -> Vec<X> {
13 (0..n)
14 .map(|_| X::rand(rng))
15 .collect()
16}
17
18pub fn cond_sum<P>(bitmask: &[bool], points: &[P]) -> P where P: AffineRepr {
19 assert_eq!(bitmask.len(), points.len());
20 bitmask.iter().zip(points.iter())
21 .map(|(&b, &p)| if b { p } else { P::zero() })
22 .sum::<P::Group>()
23 .into_affine()
24}