diff --git a/py/modcmath.c b/py/modcmath.c index 59fa76ee68..46a33d3a89 100644 --- a/py/modcmath.c +++ b/py/modcmath.c @@ -97,7 +97,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_cmath_log_obj, mp_cmath_log); STATIC mp_obj_t mp_cmath_log10(mp_obj_t z_obj) { mp_float_t real, imag; mp_obj_get_complex(z_obj, &real, &imag); - return mp_obj_new_complex(0.5 * MICROPY_FLOAT_C_FUN(log10)(real*real + imag*imag), MICROPY_FLOAT_C_FUN(atan2)(imag, real)); + return mp_obj_new_complex(0.5 * MICROPY_FLOAT_C_FUN(log10)(real*real + imag*imag), 0.4342944819032518 * MICROPY_FLOAT_C_FUN(atan2)(imag, real)); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_cmath_log10_obj, mp_cmath_log10); diff --git a/py/objcomplex.c b/py/objcomplex.c index 027292a17a..6a403f6269 100644 --- a/py/objcomplex.c +++ b/py/objcomplex.c @@ -58,7 +58,10 @@ STATIC void complex_print(void (*print)(void *env, const char *fmt, ...), void * print(env, "%sj", buf); } else { mp_format_float(o->real, buf, sizeof(buf), 'g', 7, '\0'); - print(env, "(%s+", buf); + print(env, "(%s", buf); + if (o->imag >= 0) { + print(env, "+"); + } mp_format_float(o->imag, buf, sizeof(buf), 'g', 7, '\0'); print(env, "%sj)", buf); } @@ -69,7 +72,10 @@ STATIC void complex_print(void (*print)(void *env, const char *fmt, ...), void * print(env, "%sj", buf); } else { sprintf(buf, "%.16g", (double)o->real); - print(env, "(%s+", buf); + print(env, "(%s", buf); + if (o->imag >= 0) { + print(env, "+"); + } sprintf(buf, "%.16g", (double)o->imag); print(env, "%sj)", buf); }