diff --git a/src/main.rs b/src/main.rs index 14e8ddf..d347d20 100644 --- a/src/main.rs +++ b/src/main.rs @@ -115,7 +115,7 @@ impl RoyaltyTree { let d1=lazy*self.weight_here(index)/self.weight_here_below(index); let d02=lazy-d1; let index_left =wt_left (index).unwrap(); - let index_right=wt_right(index).unwrap(); + let index_right=wt_right_edge(index,self.tree.len()).unwrap(); let d0=d02*self.weight_here_below(index_left)/self.weight_below(index); let d2=d02-d0; assert!(lazy==d0+d1+d2,"Distributing amounts that don't add up."); @@ -459,8 +459,19 @@ fn wt_left(index:usize) -> Option { if level>0 { Some(index-(1<<(wt_level(index)-1))) } else { None } } -fn wt_first_left(index: usize, edge: usize) -> Option { // Includes edge - +fn wt_right_edge(index: usize, edge: usize) -> Option { // Less than edge + if index&1==0 { None } + else { + let mut r=wt_right(index).unwrap(); + if r Option { @@ -498,7 +509,7 @@ fn tree_stuff() { fn royalty_stuff() { let mut rt=RoyaltyTree::new(); - for _ in 0..6 { + for _ in 0..20 { let index=rt.insert(FiNum::new_i32(10)); rt.add_royalty(FiNum::new_i32(24)) }