Data-DDSketch-Shared

 view release on metacpan or  search on metacpan

t/01-basic.t  view on Meta::CPAN

    for my $q (0.001, 0.01, 0.1, 0.25, 0.5, 0.75, 0.9, 0.99, 0.999) {
        my $est  = $dd->quantile($q);
        my $true = int($q * ($N - 1)) + 1;     # nearest-rank true value
        my $rel  = abs($est - $true) / $true;
        $worst = $rel if $rel > $worst;
        ok $rel <= $alpha * 1.001, sprintf("q=%.3f: rel err %.4f <= alpha", $q, $rel)
            or diag "est=$est true=$true";
    }
    diag sprintf("worst relative error: %.5f (alpha=%.3f)", $worst, $alpha);

    # quantile endpoints
    cmp_ok abs($dd->quantile(0) - 1) / 1, '<=', $alpha * 1.001, 'q=0 ~ min';
    cmp_ok abs($dd->quantile(1) - $N) / $N, '<=', $alpha * 1.001, 'q=1 ~ max';
    # median convenience
    is $dd->median, $dd->quantile(0.5), 'median == quantile(0.5)';
}

# negatives and zeros
{
    my $dd = Data::DDSketch::Shared->new(undef, 0.01);
    $dd->add($_) for -1000 .. -1;



( run in 1.970 second using v1.01-cache-2.11-cpan-9789f410c06 )