From d896a005d4a11abbd7803526dad6d927218a28f7 Mon Sep 17 00:00:00 2001 From: Gwendal Grignou Date: Wed, 9 Sep 2015 08:53:55 -0700 Subject: [PATCH] common: math: Use float when CONFIG_FPU is set. When hardware FPU is set, use it. BRANCH=smaug BUG=chrome-os-partner:39900 TEST=compile. Change-Id: I5b42bd23a7ee7549e538eff075756b58f79756f2 Signed-off-by: Gwendal Grignou Reviewed-on: https://chromium-review.googlesource.com/299516 Reviewed-by: Randall Spangler Reviewed-by: Alec Berg --- include/math_util.h | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/include/math_util.h b/include/math_util.h index 948d501033..0dd11c230b 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -8,6 +8,19 @@ #ifndef __CROS_EC_MATH_UTIL_H #define __CROS_EC_MATH_UTIL_H +#ifdef CONFIG_FPU +typedef float fp_t; +typedef float fp_inter_t; + +/* Conversion to/from fixed-point */ +#define INT_TO_FP(x) ((float)(x)) +#define FP_TO_INT(x) ((int32_t)(x)) +/* Float to fixed-point, only for compile-time constants and unit tests */ +#define FLOAT_TO_FP(x) ((float)(x)) +/* Fixed-point to float, for unit tests */ +#define FP_TO_FLOAT(x) ((float)(x)) + +#else /* Fixed-point type */ typedef int32_t fp_t; @@ -24,12 +37,24 @@ typedef int64_t fp_inter_t; #define FLOAT_TO_FP(x) ((fp_t)((x) * (float)(1<= 0 ? a : -a); + return (a >= INT_TO_FP(0) ? a : -a); } /*