From 663af3dfb32ef81bf7bc45d926721e8d48d31587 Mon Sep 17 00:00:00 2001 From: Adam Martini Date: Tue, 23 Jun 2020 12:54:06 -0700 Subject: [PATCH] Shift mapping math out of floating point --- src/lv_misc/lv_math.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lv_misc/lv_math.c b/src/lv_misc/lv_math.c index 7c467b5f1..9e8a91b80 100644 --- a/src/lv_misc/lv_math.c +++ b/src/lv_misc/lv_math.c @@ -239,12 +239,12 @@ int64_t _lv_pow(int64_t base, int8_t exp) * @param in min output range * @param out max output range */ -LV_ATTRIBUTE_FAST_MEM int16_t _lv_map(int16_t x, float min_in, float max_in, float min, float max) +LV_ATTRIBUTE_FAST_MEM int16_t _lv_map(int16_t x, int16_t min_in, int16_t max_in, int16_t min, int16_t max) { - float slope = (max - min) / (max_in - min_in); - float bias = min - slope * min_in; + uint32_t slope = ((uint32_t)(max - min) * 1000) / (uint32_t)(max_in - min_in); /** times 1000 to avoid rounding errors*/ + uint32_t bias = min - (slope * min_in) / 1000; - return bias + slope * x; + return bias + (slope * x) / 1000; } /**********************