T-Digest algorithm in rust
This implementation is following Facebook folly's implementation
Add this to your
[dependencies] tdigest = "0.2"
then you are good to go. If you are using Rust 2015 you have to
extern crate tdigest to your crate root as well.
use tdigest::TDigest; let t = TDigest::new_with_size(100); let values: Vec<f64> = (1..=1_000_000).map(f64::from).collect(); let t = t.merge_sorted(values); let ans = t.estimate_quantile(0.99); let expected: f64 = 990_000.0; let percentage: f64 = (expected - ans).abs() / expected; assert!(percentage < 0.01);