From 5260810d70311b9baaea249ef4a8bcd80f56f5dc Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 8 Mar 2014 15:04:54 +0000 Subject: [PATCH] py: Wrap mpz float functions in MICROPY_ENABLE_FLOAT. --- py/mpz.c | 6 ++++-- py/mpz.h | 4 +++- py/objint_mpz.c | 9 ++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/py/mpz.c b/py/mpz.c index 6e54d154fe..d6aeafd102 100644 --- a/py/mpz.c +++ b/py/mpz.c @@ -1001,8 +1001,9 @@ machine_int_t mpz_as_int(const mpz_t *i) { return val; } -machine_float_t mpz_as_float(const mpz_t *i) { - machine_float_t val = 0; +#if MICROPY_ENABLE_FLOAT +mp_float_t mpz_as_float(const mpz_t *i) { + mp_float_t val = 0; mpz_dig_t *d = i->dig + i->len; while (--d >= i->dig) { @@ -1015,6 +1016,7 @@ machine_float_t mpz_as_float(const mpz_t *i) { return val; } +#endif uint mpz_as_str_size(const mpz_t *i, uint base) { if (base < 2 || base > 32) { diff --git a/py/mpz.h b/py/mpz.h index 8f5fc3720e..0ef1ad10db 100644 --- a/py/mpz.h +++ b/py/mpz.h @@ -65,7 +65,9 @@ mpz_t *mpz_div(const mpz_t *lhs, const mpz_t *rhs); mpz_t *mpz_mod(const mpz_t *lhs, const mpz_t *rhs); machine_int_t mpz_as_int(const mpz_t *z); -machine_float_t mpz_as_float(const mpz_t *z); +#if MICROPY_ENABLE_FLOAT +mp_float_t mpz_as_float(const mpz_t *z); +#endif uint mpz_as_str_size(const mpz_t *z, uint base); char *mpz_as_str(const mpz_t *z, uint base); uint mpz_as_str_inpl(const mpz_t *z, uint base, char *str); diff --git a/py/objint_mpz.c b/py/objint_mpz.c index 6e1ee1a999..5cd4fb7bac 100644 --- a/py/objint_mpz.c +++ b/py/objint_mpz.c @@ -60,10 +60,13 @@ mp_obj_t int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { return MP_OBJ_NULL; } - if (op == RT_BINARY_OP_TRUE_DIVIDE || op == RT_BINARY_OP_INPLACE_TRUE_DIVIDE) { - machine_float_t flhs = mpz_as_float(zlhs); - machine_float_t frhs = mpz_as_float(zrhs); + if (0) { +#if MICROPY_ENABLE_FLOAT + } else if (op == RT_BINARY_OP_TRUE_DIVIDE || op == RT_BINARY_OP_INPLACE_TRUE_DIVIDE) { + mp_float_t flhs = mpz_as_float(zlhs); + mp_float_t frhs = mpz_as_float(zrhs); return mp_obj_new_float(flhs / frhs); +#endif } else if (op <= RT_BINARY_OP_POWER) { mp_obj_int_t *res = mp_obj_int_new_mpz();