w3f_plonk_common/
test_helpers.rs1use 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}