Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.43 KB | None | 0 0
  1. use num_traits::Zero;
  2. use std::ops::{Add, Mul};
  3.  
  4. fn horner<Arr, Arg, Out>(v: &[Arr], x: Arg) -> Out
  5. where
  6. Arr: Clone + Mul<Arr, Output = Arr> + Mul<Arg, Output = Arr> + Zero,
  7. Arg: Clone,
  8. Out: From<Arr>,
  9. {
  10. v.iter()
  11. .rev()
  12. .fold(Arr::zero(), |acc, coeff| acc * x.clone() + coeff.clone())
  13. .into()
  14. }
  15.  
  16. fn main() {
  17. let v = [-19., 7., -4., 6.];
  18. println!("result: {}", horner::<f32, f32, f64>(&v, 3.0));
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement