summaryrefslogtreecommitdiff
path: root/py/objcomplex.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/objcomplex.c')
-rw-r--r--py/objcomplex.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/py/objcomplex.c b/py/objcomplex.c
index 8a424f7f2..b790b0563 100644
--- a/py/objcomplex.c
+++ b/py/objcomplex.c
@@ -37,10 +37,7 @@
#if MICROPY_PY_BUILTINS_COMPLEX
#include <math.h>
-
-#if MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_FLOAT
#include "py/formatfloat.h"
-#endif
typedef struct _mp_obj_complex_t {
mp_obj_base_t base;
@@ -53,33 +50,23 @@ STATIC void complex_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_
mp_obj_complex_t *o = o_in;
#if MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_FLOAT
char buf[16];
- if (o->real == 0) {
- mp_format_float(o->imag, buf, sizeof(buf), 'g', 7, '\0');
- mp_printf(print, "%sj", buf);
- } else {
- mp_format_float(o->real, buf, sizeof(buf), 'g', 7, '\0');
- mp_printf(print, "(%s", buf);
- if (o->imag >= 0 || isnan(o->imag)) {
- mp_print_str(print, "+");
- }
- mp_format_float(o->imag, buf, sizeof(buf), 'g', 7, '\0');
- mp_printf(print, "%sj)", buf);
- }
+ const int precision = 7;
#else
char buf[32];
+ const int precision = 16;
+#endif
if (o->real == 0) {
- sprintf(buf, "%.16g", (double)o->imag);
+ mp_format_float(o->imag, buf, sizeof(buf), 'g', precision, '\0');
mp_printf(print, "%sj", buf);
} else {
- sprintf(buf, "%.16g", (double)o->real);
+ mp_format_float(o->real, buf, sizeof(buf), 'g', precision, '\0');
mp_printf(print, "(%s", buf);
if (o->imag >= 0 || isnan(o->imag)) {
mp_print_str(print, "+");
}
- sprintf(buf, "%.16g", (double)o->imag);
+ mp_format_float(o->imag, buf, sizeof(buf), 'g', precision, '\0');
mp_printf(print, "%sj)", buf);
}
-#endif
}
STATIC mp_obj_t complex_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {