This crate provides several algorithms that implement highly accurate or even guaranteed correct sum and dot product for floating-point numbers without resorting to arbitrary precision arithmetic. These algorithms are available:
- Kahan summation, based on Kahan 65
- Neumaier summation, based on Neumaier 74
- Klein summation, based on Klein 06
- Accurate sum and dot product, based on Ogita, Rump, and Oishi 05
- Online exact summation, based on Zhu and Hayes 10
Add the accurate
crate as a dependency in your Cargo.toml
:
[dependencies]
accurate = "0.4"
Then use it in your program like this:
extern crate accurate;
use accurate::traits::*;
use accurate::sum::Sum2;
fn main() {
let x = vec![1.0, 2.0, 3.0];
let s = x.sum_with_accumulator::<Sum2<_>>();
assert_eq!(6.0f64, s);
}
Documentation for the latest version of the crate is on docs.rs.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.