Function build_subproduct_tree

Source
pub fn build_subproduct_tree<T>(a: Vec<T>) -> Vec<T>
where T: Sized + Clone + One + for<'x> From<<&'x T as Mul>::Output>, for<'x> &'x T: Mul,
Expand description

calc subproduct tree

 120
  /\
 6  20
/\  /\
2 3 4 5
use ring_algorithm::build_subproduct_tree;
let a = vec![2, 3, 4, 5];
let b = vec![120, 6, 20, 2, 3, 4, 5];
let r = build_subproduct_tree::<i32>(a);
assert_eq!(b, r);
let a = vec![2, 3, 4, 5, 6];
let b = vec![720, 120, 6, 6, 20, 6, 1, 2, 3, 4, 5, 6, 1, 1, 1];
let r = build_subproduct_tree::<i32>(a);
assert_eq!(b, r);