From: Miroslav Lichvar Date: Mon, 18 Nov 2024 14:54:17 +0000 (+0100) Subject: quantiles: add functions to get max k and min step X-Git-Tag: 4.7-pre1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77962bb5274632897fd52e7b219c7d4ba22d2f59;p=thirdparty%2Fchrony.git quantiles: add functions to get max k and min step --- diff --git a/hwclock.c b/hwclock.c index 86c7e51d..c662dae3 100644 --- a/hwclock.c +++ b/hwclock.c @@ -199,8 +199,8 @@ HCL_ProcessReadings(HCL_Instance clock, int n_readings, struct timespec tss[][3] local_prec = LCL_GetSysPrecisionAsQuantum(); - low_delay = QNT_GetQuantile(clock->delay_quants, DELAY_QUANT_MIN_K); - high_delay = QNT_GetQuantile(clock->delay_quants, DELAY_QUANT_MAX_K); + low_delay = QNT_GetQuantile(clock->delay_quants, QNT_GetMinK(clock->delay_quants)); + high_delay = QNT_GetQuantile(clock->delay_quants, QNT_GetMaxK(clock->delay_quants)); low_delay = MIN(low_delay, high_delay); high_delay = MAX(high_delay, low_delay + local_prec); diff --git a/quantiles.c b/quantiles.c index 27283eaa..a579b297 100644 --- a/quantiles.c +++ b/quantiles.c @@ -193,6 +193,22 @@ QNT_GetMinK(QNT_Instance inst) /* ================================================== */ +int +QNT_GetMaxK(QNT_Instance inst) +{ + return inst->min_k + (inst->n_quants / inst->repeat) - 1; +} + +/* ================================================== */ + +double +QNT_GetMinStep(QNT_Instance inst) +{ + return inst->min_step; +} + +/* ================================================== */ + double QNT_GetQuantile(QNT_Instance inst, int k) { diff --git a/quantiles.h b/quantiles.h index 1788544e..b9665d50 100644 --- a/quantiles.h +++ b/quantiles.h @@ -36,6 +36,8 @@ extern void QNT_DestroyInstance(QNT_Instance inst); extern void QNT_Reset(QNT_Instance inst); extern void QNT_Accumulate(QNT_Instance inst, double value); extern int QNT_GetMinK(QNT_Instance inst); +extern int QNT_GetMaxK(QNT_Instance inst); +extern double QNT_GetMinStep(QNT_Instance inst); extern double QNT_GetQuantile(QNT_Instance inst, int k); #endif diff --git a/test/unit/quantiles.c b/test/unit/quantiles.c index 5d97df6e..86907808 100644 --- a/test/unit/quantiles.c +++ b/test/unit/quantiles.c @@ -43,6 +43,8 @@ test_unit(void) inst = QNT_CreateInstance(min_k, max_k, q, r, 1e-9); TEST_CHECK(min_k == QNT_GetMinK(inst)); + TEST_CHECK(max_k == QNT_GetMaxK(inst)); + TEST_CHECK(fabs(QNT_GetMinStep(inst) - 1e-9) < 1e-12); for (j = 0; j < 3000; j++) { x = TST_GetRandomDouble(0.0, 2e-6);