fix even-distribution generation
This commit is contained in:
parent
75355d1d12
commit
0878a01fd1
2 changed files with 6 additions and 3 deletions
|
@ -25,7 +25,7 @@ fn smt_subtree_even(c: &mut Criterion) {
|
||||||
let entries: Vec<(RpoDigest, Word)> = (0..pair_count)
|
let entries: Vec<(RpoDigest, Word)> = (0..pair_count)
|
||||||
.map(|n| {
|
.map(|n| {
|
||||||
// A single depth-8 subtree can have a maximum of 255 leaves.
|
// 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([
|
let key = RpoDigest::new([
|
||||||
generate_value(&mut seed),
|
generate_value(&mut seed),
|
||||||
ONE,
|
ONE,
|
||||||
|
@ -47,6 +47,7 @@ fn smt_subtree_even(c: &mut Criterion) {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
leaves.sort();
|
leaves.sort();
|
||||||
|
leaves.dedup_by_key(|leaf| leaf.0);
|
||||||
leaves
|
leaves
|
||||||
},
|
},
|
||||||
|leaves| {
|
|leaves| {
|
||||||
|
|
|
@ -597,7 +597,7 @@ mod test {
|
||||||
|
|
||||||
let entries: Vec<(RpoDigest, Word)> = (0..PAIR_COUNT)
|
let entries: Vec<(RpoDigest, Word)> = (0..PAIR_COUNT)
|
||||||
.map(|i| {
|
.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 key = RpoDigest::new([ONE, ONE, Felt::new(i), Felt::new(leaf_index)]);
|
||||||
let value = [ONE, ONE, ONE, Felt::new(i)];
|
let value = [ONE, ONE, ONE, Felt::new(i)];
|
||||||
(key, value)
|
(key, value)
|
||||||
|
@ -606,7 +606,7 @@ mod test {
|
||||||
|
|
||||||
let control = Smt::with_entries(entries.clone()).unwrap();
|
let control = Smt::with_entries(entries.clone()).unwrap();
|
||||||
|
|
||||||
let leaves: Vec<(u64, RpoDigest)> = entries
|
let mut leaves: Vec<(u64, RpoDigest)> = entries
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(key, value)| {
|
.map(|(key, value)| {
|
||||||
let leaf = SmtLeaf::new_single(*key, *value);
|
let leaf = SmtLeaf::new_single(*key, *value);
|
||||||
|
@ -615,6 +615,8 @@ mod test {
|
||||||
(col, hash)
|
(col, hash)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
leaves.sort();
|
||||||
|
leaves.dedup_by_key(|leaf| leaf.0);
|
||||||
|
|
||||||
let first_subtree = Smt::build_subtree(leaves, SMT_DEPTH);
|
let first_subtree = Smt::build_subtree(leaves, SMT_DEPTH);
|
||||||
assert!(!first_subtree.is_empty());
|
assert!(!first_subtree.is_empty());
|
||||||
|
|
Loading…
Add table
Reference in a new issue