#t-digest #quantile #approximate #percentile

tdigests

An efficient Rust implementation of the t-digest algorithm

4 releases (2 stable)

1.0.1 Dec 16, 2025
1.0.0 Jun 10, 2025
0.1.1 Oct 31, 2024
0.1.0 Oct 31, 2024

#148 in Cryptography

Download history 830/week @ 2025-12-25 441/week @ 2026-01-01 675/week @ 2026-01-08 545/week @ 2026-01-15 1449/week @ 2026-01-22 1154/week @ 2026-01-29 947/week @ 2026-02-05 35069/week @ 2026-02-12 76348/week @ 2026-02-19 89168/week @ 2026-02-26 102006/week @ 2026-03-05 95775/week @ 2026-03-12 60593/week @ 2026-03-19 47456/week @ 2026-03-26 62494/week @ 2026-04-02 69665/week @ 2026-04-09

253,783 downloads per month
Used in kelora

MIT license

30KB
517 lines

T-Digest Rust Library

Crates.io Docs.rs License

An efficient Rust implementation of the t-digest algorithm, which allows accurate estimation of quantiles and relative rank over streaming data.

Features

  • Quantile Estimation: Compute approximate quantiles (e.g., median, percentiles) from large datasets.
  • Streaming Data: Suitable for online computation where data arrives incrementally.
  • Merging Digests: Supports merging t-digests from different data partitions, ideal for distributed systems.
  • Compression: Adjustable compression factor to balance accuracy and memory usage.
  • Simple State: Minimal state structure for easy serialization and deserialization.

Installation

Add the following to your Cargo.toml:

[dependencies]
tdigests = 1.0

Usage

use tdigests::TDigest;

fn main() {
    // Create a new t-digest
    let digest = TDigest::from_values(vec![1.0, 2.0, 3.0]);

    // Estimate quantiles
    let median = digest.estimate_quantile(0.5);
    println!("Estimated median: {}", median);

    // Estimate rank
    let rank = digest.estimate_rank(2.5);
    println!("Rank of 2.5: {}", rank);
}

Examples

See the simple.rs for a complete example demonstrating how to use the t-digest library.

Contributing

Contributions are welcome! Please open issues or submit pull requests on the GitHub repository.

License

This project is licensed under the MIT License.

No runtime deps