From d8d4e4dfbe4ca76a1b0adf4f1938562a308c6d48 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 4 Oct 2017 21:46:38 +1100 Subject: [PATCH] py/modmath: Convert log2 macro into a function. So that a pointer to it can be passed as a pointer to math_generic_1. This patch also makes the function work for single and double precision floating point. --- py/modmath.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/py/modmath.c b/py/modmath.c index 6c248844df..7eda7594d9 100644 --- a/py/modmath.c +++ b/py/modmath.c @@ -85,8 +85,12 @@ STATIC mp_obj_t math_generic_2(mp_obj_t x_obj, mp_obj_t y_obj, mp_float_t (*f)(m STATIC MP_DEFINE_CONST_FUN_OBJ_2(mp_math_## py_name ## _obj, mp_math_ ## py_name); #if MP_NEED_LOG2 +#undef log2 +#undef log2f // 1.442695040888963407354163704 is 1/_M_LN2 -#define log2(x) (log(x) * 1.442695040888963407354163704) +mp_float_t MICROPY_FLOAT_C_FUN(log2)(mp_float_t x) { + return MICROPY_FLOAT_C_FUN(log)(x) * MICROPY_FLOAT_CONST(1.442695040888963407354163704); +} #endif // sqrt(x): returns the square root of x