py: Fix cmath.log10; fix printing of complex number with negative imag.
This commit is contained in:
parent
471b2a8906
commit
f49782f005
|
@ -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) {
|
STATIC mp_obj_t mp_cmath_log10(mp_obj_t z_obj) {
|
||||||
mp_float_t real, imag;
|
mp_float_t real, imag;
|
||||||
mp_obj_get_complex(z_obj, &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);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_cmath_log10_obj, mp_cmath_log10);
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,10 @@ STATIC void complex_print(void (*print)(void *env, const char *fmt, ...), void *
|
||||||
print(env, "%sj", buf);
|
print(env, "%sj", buf);
|
||||||
} else {
|
} else {
|
||||||
mp_format_float(o->real, buf, sizeof(buf), 'g', 7, '\0');
|
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');
|
mp_format_float(o->imag, buf, sizeof(buf), 'g', 7, '\0');
|
||||||
print(env, "%sj)", buf);
|
print(env, "%sj)", buf);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +72,10 @@ STATIC void complex_print(void (*print)(void *env, const char *fmt, ...), void *
|
||||||
print(env, "%sj", buf);
|
print(env, "%sj", buf);
|
||||||
} else {
|
} else {
|
||||||
sprintf(buf, "%.16g", (double)o->real);
|
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);
|
sprintf(buf, "%.16g", (double)o->imag);
|
||||||
print(env, "%sj)", buf);
|
print(env, "%sj)", buf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue