diff --git a/esp8266/Makefile b/esp8266/Makefile index 4710f4cdc24d3686d6f374e08fa9da3be868925a..28dbf08a647bd6d4227ad0b275b211f3e59627f4 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -108,7 +108,7 @@ LIB_SRC_C = $(addprefix lib/,\ libc/string0.c \ libm/math.c \ libm/fmodf.c \ - libm/roundf.c \ + libm/nearbyintf.c \ libm/ef_sqrt.c \ libm/kf_rem_pio2.c \ libm/kf_sin.c \ diff --git a/py/modbuiltins.c b/py/modbuiltins.c index 13312d22964ae11c6f4aad1ff2ae2c2d6e537f86..541e733e5a95adcce51c31847e84ed3275b5be19 100644 --- a/py/modbuiltins.c +++ b/py/modbuiltins.c @@ -473,18 +473,11 @@ STATIC mp_obj_t mp_builtin_round(size_t n_args, const mp_obj_t *args) { mp_float_t val = mp_obj_get_float(o_in); mp_float_t mult = MICROPY_FLOAT_C_FUN(pow)(10, num_dig); // TODO may lead to overflow - mp_float_t rounded = MICROPY_FLOAT_C_FUN(round)(val * mult) / mult; + mp_float_t rounded = MICROPY_FLOAT_C_FUN(nearbyint)(val * mult) / mult; return mp_obj_new_float(rounded); } mp_float_t val = mp_obj_get_float(o_in); - mp_float_t rounded = MICROPY_FLOAT_C_FUN(round)(val); - mp_int_t r = rounded; - // make rounded value even if it was halfway between ints - if (val - rounded == 0.5) { - r = (r + 1) & (~1); - } else if (val - rounded == -0.5) { - r &= ~1; - } + mp_float_t rounded = MICROPY_FLOAT_C_FUN(nearbyint)(val); #else mp_int_t r = mp_obj_get_int(o_in); #endif diff --git a/qemu-arm/Makefile b/qemu-arm/Makefile index e8f5b359efc1008a69c1d3501c63be2ec56328c8..d4bbe8d583fcc92011644448134b07b618d5e548 100644 --- a/qemu-arm/Makefile +++ b/qemu-arm/Makefile @@ -47,7 +47,7 @@ SRC_TEST_C = \ LIB_SRC_C = $(addprefix lib/,\ libm/math.c \ libm/fmodf.c \ - libm/roundf.c \ + libm/nearbyintf.c \ libm/ef_sqrt.c \ libm/kf_rem_pio2.c \ libm/kf_sin.c \ diff --git a/stmhal/Makefile b/stmhal/Makefile index 3eef6ffb23f33efcaab2045a5a0e127214558fe4..51aa07f3c938cea3859073093d987f4baa0f46c4 100644 --- a/stmhal/Makefile +++ b/stmhal/Makefile @@ -86,7 +86,7 @@ SRC_LIB = $(addprefix lib/,\ libm/atanf.c \ libm/atan2f.c \ libm/fmodf.c \ - libm/roundf.c \ + libm/nearbyintf.c \ libm/log1pf.c \ libm/acoshf.c \ libm/asinhf.c \