staging_common/
test_helpers.rs

1use 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}