w3f_plonk_common/
test_helpers.rs

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