diff options
author | Damien George <damien.p.george@gmail.com> | 2016-11-03 12:33:01 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-11-03 12:33:01 +1100 |
commit | 561844f3ba2dc81ce37c58468099042e27cd422b (patch) | |
tree | 95bc16e21265b3a517710325be39a50002b8afa2 /py/modmath.c | |
parent | ca973bd3083492777095a07c20965a4644899ec9 (diff) |
py: Add MICROPY_FLOAT_CONST macro for defining float constants.
All float constants in the core should use this macro to prevent
unnecessary creation of double-precision floats, which makes code less
efficient.
Diffstat (limited to 'py/modmath.c')
-rw-r--r-- | py/modmath.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/py/modmath.c b/py/modmath.c index 0c70f34cd..7c51eab03 100644 --- a/py/modmath.c +++ b/py/modmath.c @@ -32,9 +32,8 @@ #include <math.h> // M_PI is not part of the math.h standard and may not be defined -#ifndef M_PI -#define M_PI (3.14159265358979323846) -#endif +// And by defining our own we can ensure it uses the correct const format. +#define MP_PI MICROPY_FLOAT_CONST(3.14159265358979323846) /// \module math - mathematical functions /// @@ -204,13 +203,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_modf_obj, mp_math_modf); /// \function radians(x) STATIC mp_obj_t mp_math_radians(mp_obj_t x_obj) { - return mp_obj_new_float(mp_obj_get_float(x_obj) * M_PI / 180.0); + return mp_obj_new_float(mp_obj_get_float(x_obj) * (MP_PI / MICROPY_FLOAT_CONST(180.0))); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_radians_obj, mp_math_radians); /// \function degrees(x) STATIC mp_obj_t mp_math_degrees(mp_obj_t x_obj) { - return mp_obj_new_float(mp_obj_get_float(x_obj) * 180.0 / M_PI); + return mp_obj_new_float(mp_obj_get_float(x_obj) * (MICROPY_FLOAT_CONST(180.0) / MP_PI)); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_degrees_obj, mp_math_degrees); |