From 9a967d587615bde961326cf6f1d64993dfd66e2c Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Wed, 14 Apr 2021 14:44:32 +0200 Subject: [PATCH] corrected off-by-one error when using E_MAX vlaues. --- lib/eseries.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/eseries.c b/lib/eseries.c index 9504290..444941d 100644 --- a/lib/eseries.c +++ b/lib/eseries.c @@ -59,13 +59,13 @@ double round_to_E_series (double continuous_value, ESeries E_series) { int upper_e_limit = e_max_values; int lower_e_limit = 0; - for (int i = 0 ; i < log2((e_max_values/3)); i++) { + for (int i = 0 ; i < log2((e_max_values + 1 / 3)); i++) { - if (continuous_value < E_values[E_series][((upper_e_limit - lower_e_limit + 1) / 2) + lower_e_limit]) { - upper_e_limit = ((upper_e_limit - lower_e_limit + 1) / 2) + lower_e_limit - 1; + if (continuous_value < E_values[E_series][(((upper_e_limit - lower_e_limit) + 1) / 2) + lower_e_limit]) { + upper_e_limit = (((upper_e_limit - lower_e_limit) + 1) / 2) + lower_e_limit - 1; } else { - lower_e_limit = ((upper_e_limit - lower_e_limit + 1) / 2) + lower_e_limit; + lower_e_limit = (((upper_e_limit - lower_e_limit) + 1) / 2) + lower_e_limit; } }