asap_sketchlib 0.2.0

A high-performance sketching library for approximate stream processing
Documentation
# API: DDSketch

Status: `Ready`

## Purpose

Approximate quantile estimation with relative error guarantees.

## Type/Struct

- `DDSketch`

## Constructors

```rust
fn new(alpha: f64) -> Self
```

## Insert/Update

```rust
fn add<T: NumericalValue>(&mut self, val: &T)
fn add_input(&mut self, v: &DataInput) -> Result<(), &'static str>
```

`add` accepts any type implementing `NumericalValue` (all standard integer and
float primitives). Values are internally converted to `f64`; non-positive or
non-finite values are ignored. `add_input` is the `DataInput` adapter used by
the type-erased dispatch path.

## Query

```rust
fn get_value_at_quantile(&self, q: f64) -> Option<f64>
fn get_count(&self) -> u64
fn min(&self) -> Option<f64>
fn max(&self) -> Option<f64>
```

## Merge

```rust
fn merge(&mut self, other: &DDSketch)
```

## Serialization

```rust
fn serialize_to_bytes(&self) -> Result<Vec<u8>, RmpEncodeError>
fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, RmpDecodeError>
```

## Examples

```rust
use asap_sketchlib::DDSketch;

let mut dds = DDSketch::new(0.01);
dds.add(&1.0_f64);
dds.add(&2_i32);
let p50 = dds.get_value_at_quantile(0.5).unwrap();
assert!(p50 >= 1.0);
```

## Caveats

- Inputs must be positive values.
- Merge requires compatible configuration (`alpha`).

## Status

Supported and tested for multiple distributions.