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 )