From 77962bb5274632897fd52e7b219c7d4ba22d2f59 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 18 Nov 2024 15:54:17 +0100 Subject: [PATCH] quantiles: add functions to get max k and min step --- hwclock.c | 4 ++-- quantiles.c | 16 ++++++++++++++++ quantiles.h | 2 ++ test/unit/quantiles.c | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) 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); -- 2.47.2