Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use num_traits::Zero;
- use std::ops::{Add, Mul};
- fn horner<Arr, Arg, Out>(v: &[Arr], x: Arg) -> Out
- where
- Arr: Clone + Mul<Arr, Output = Arr> + Mul<Arg, Output = Arr> + Zero,
- Arg: Clone,
- Out: From<Arr>,
- {
- v.iter()
- .rev()
- .fold(Arr::zero(), |acc, coeff| acc * x.clone() + coeff.clone())
- .into()
- }
- fn main() {
- let v = [-19., 7., -4., 6.];
- println!("result: {}", horner::<f32, f32, f64>(&v, 3.0));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement