fix even-distribution generation

This commit is contained in:
Qyriad 2024-10-25 17:42:50 -06:00
parent 75355d1d12
commit 0878a01fd1
2 changed files with 6 additions and 3 deletions

View file

@ -25,7 +25,7 @@ fn smt_subtree_even(c: &mut Criterion) {
let entries: Vec<(RpoDigest, Word)> = (0..pair_count)
.map(|n| {
// A single depth-8 subtree can have a maximum of 255 leaves.
let leaf_index = (n / pair_count) * 255;
let leaf_index = ((n as f64 / pair_count as f64) * 255.0) as u64;
let key = RpoDigest::new([
generate_value(&mut seed),
ONE,
@ -47,6 +47,7 @@ fn smt_subtree_even(c: &mut Criterion) {
})
.collect();
leaves.sort();
leaves.dedup_by_key(|leaf| leaf.0);
leaves
},
|leaves| {

View file

@ -597,7 +597,7 @@ mod test {
let entries: Vec<(RpoDigest, Word)> = (0..PAIR_COUNT)
.map(|i| {
let leaf_index = u64::MAX / (i + 1);
let leaf_index = ((i as f64 / PAIR_COUNT as f64) * 255.0) as u64;
let key = RpoDigest::new([ONE, ONE, Felt::new(i), Felt::new(leaf_index)]);
let value = [ONE, ONE, ONE, Felt::new(i)];
(key, value)
@ -606,7 +606,7 @@ mod test {
let control = Smt::with_entries(entries.clone()).unwrap();
let leaves: Vec<(u64, RpoDigest)> = entries
let mut leaves: Vec<(u64, RpoDigest)> = entries
.iter()
.map(|(key, value)| {
let leaf = SmtLeaf::new_single(*key, *value);
@ -615,6 +615,8 @@ mod test {
(col, hash)
})
.collect();
leaves.sort();
leaves.dedup_by_key(|leaf| leaf.0);
let first_subtree = Smt::build_subtree(leaves, SMT_DEPTH);
assert!(!first_subtree.is_empty());