| Crates.io | tdigest-rs |
| lib.rs | tdigest-rs |
| version | 0.2.5 |
| created_at | 2023-08-19 03:23:51.274401+00 |
| updated_at | 2023-08-19 03:53:01.162826+00 |
| description | T-Digest algorithm in Rust |
| homepage | |
| repository | https://github.com/zeus-fyi/t-digest |
| max_upload_size | |
| id | 948473 |
| size | 42,067 |
This implementation is following Facebook folly's implementation
Add this to your Cargo.toml:
[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);