From da3dffa79ddadbc789a06e7afd82ca6e52b47b8c Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Fri, 8 Jan 2016 17:57:30 +0000
Subject: [PATCH] py/objint: Fix classification of float so it works for
 OBJ_REPR_D.

---
 py/objint.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/py/objint.c b/py/objint.c
index db8eaa48d..57fe364dc 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -107,7 +107,9 @@ mp_fp_as_int_class_t mp_classify_fp_as_int(mp_float_t val) {
     } else {
         e &= ~((1 << MP_FLOAT_EXP_SHIFT_I32) - 1);
     }
-    if (e <= ((BITS_PER_WORD + MP_FLOAT_EXP_BIAS - 3) << MP_FLOAT_EXP_SHIFT_I32)) {
+    // 8 * sizeof(uintptr_t) counts the number of bits for a small int
+    // TODO provide a way to configure this properly
+    if (e <= ((8 * sizeof(uintptr_t) + MP_FLOAT_EXP_BIAS - 3) << MP_FLOAT_EXP_SHIFT_I32)) {
         return MP_FP_CLASS_FIT_SMALLINT;
     }
 #if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_LONGLONG
-- 
GitLab