Trait accurate::traits::DotAccumulator
[−]
[src]
pub trait DotAccumulator<F>: Add<(F, F), Output = Self> + From<F> + Clone { fn dot(self) -> F; fn zero() -> Self
where
F: Zero, { ... } fn absorb<I>(self, it: I) -> Self
where
I: IntoIterator<Item = (F, F)>, { ... } }
Accumulates terms of a dot product
Required Methods
fn dot(self) -> F
The dot product of all terms accumulated so far
Provided Methods
fn zero() -> Self where
F: Zero,
F: Zero,
Initial value for an accumulator
fn absorb<I>(self, it: I) -> Self where
I: IntoIterator<Item = (F, F)>,
I: IntoIterator<Item = (F, F)>,
Absorb the items of an iterator into the accumulator
Examples
use accurate::traits::*; use accurate::dot::Dot2; let x = vec![1.0, 2.0, 3.0]; let y = x.clone(); let d = Dot2::zero().absorb(x.into_iter().zip(y.into_iter())); assert_eq!(14.0f64, d.dot())
Implementors
impl<F> DotAccumulator<F> for NaiveDot<F> where
F: Float,impl<F> DotAccumulator<F> for Dot2<F> where
F: Float + TwoProduct + TwoSum,impl<F, R> DotAccumulator<F> for DotK<F, R> where
F: Float + TwoProduct + TwoSum,
R: SumAccumulator<F>,impl<F> DotAccumulator<F> for OnlineExactDot<F> where
F: TwoProduct,
OnlineExactSum<F>: SumAccumulator<F>,