py: Add function to convert long int to float.
diff --git a/py/obj.c b/py/obj.c
index 0c91e8f..717df51 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -176,6 +176,8 @@
         return 1;
     } else if (MP_OBJ_IS_SMALL_INT(arg)) {
         return MP_OBJ_SMALL_INT_VALUE(arg);
+    } else if (MP_OBJ_IS_TYPE(arg, &int_type)) {
+        return mp_obj_int_as_float(arg);
     } else if (MP_OBJ_IS_TYPE(arg, &mp_type_float)) {
         return mp_obj_float_get(arg);
     } else {
diff --git a/py/obj.h b/py/obj.h
index 3217c4a..ec343fd 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -330,6 +330,9 @@
 extern const mp_obj_type_t int_type;
 // For long int, returns value truncated to machine_int_t
 machine_int_t mp_obj_int_get(mp_obj_t self_in);
+#if MICROPY_ENABLE_FLOAT
+mp_float_t mp_obj_int_as_float(mp_obj_t self_in);
+#endif
 // Will rains exception if value doesn't fit into machine_int_t
 machine_int_t mp_obj_int_get_checked(mp_obj_t self_in);
 
diff --git a/py/objint.c b/py/objint.c
index 9cba1ce..70f44ac 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -101,6 +101,12 @@
     return MP_OBJ_SMALL_INT_VALUE(self_in);
 }
 
+#if MICROPY_ENABLE_FLOAT
+mp_float_t mp_obj_int_as_float(mp_obj_t self_in) {
+    return MP_OBJ_SMALL_INT_VALUE(self_in);
+}
+#endif
+
 #endif // MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE
 
 const mp_obj_type_t int_type = {
diff --git a/py/objint_longlong.c b/py/objint_longlong.c
index 6a0dfa7..b066fa5 100644
--- a/py/objint_longlong.c
+++ b/py/objint_longlong.c
@@ -153,9 +153,10 @@
 machine_int_t mp_obj_int_get(mp_obj_t self_in) {
     if (MP_OBJ_IS_SMALL_INT(self_in)) {
         return MP_OBJ_SMALL_INT_VALUE(self_in);
+    } else {
+        mp_obj_int_t *self = self_in;
+        return self->val;
     }
-    mp_obj_int_t *self = self_in;
-    return self->val;
 }
 
 machine_int_t mp_obj_int_get_checked(mp_obj_t self_in) {
@@ -163,4 +164,15 @@
     return mp_obj_int_get(self_in);
 }
 
+#if MICROPY_ENABLE_FLOAT
+mp_float_t mp_obj_int_as_float(mp_obj_t self_in) {
+    if (MP_OBJ_IS_SMALL_INT(self_in)) {
+        return MP_OBJ_SMALL_INT_VALUE(self_in);
+    } else {
+        mp_obj_int_t *self = self_in;
+        return self->val;
+    }
+}
+#endif
+
 #endif
diff --git a/py/objint_mpz.c b/py/objint_mpz.c
index 39ea7ca..05e300d 100644
--- a/py/objint_mpz.c
+++ b/py/objint_mpz.c
@@ -215,9 +215,10 @@
 machine_int_t mp_obj_int_get(mp_obj_t self_in) {
     if (MP_OBJ_IS_SMALL_INT(self_in)) {
         return MP_OBJ_SMALL_INT_VALUE(self_in);
+    } else {
+        mp_obj_int_t *self = self_in;
+        return mpz_as_int(&self->mpz);
     }
-    mp_obj_int_t *self = self_in;
-    return mpz_as_int(&self->mpz);
 }
 
 machine_int_t mp_obj_int_get_checked(mp_obj_t self_in) {
@@ -225,4 +226,15 @@
     return mp_obj_int_get(self_in);
 }
 
+#if MICROPY_ENABLE_FLOAT
+mp_float_t mp_obj_int_as_float(mp_obj_t self_in) {
+    if (MP_OBJ_IS_SMALL_INT(self_in)) {
+        return MP_OBJ_SMALL_INT_VALUE(self_in);
+    } else {
+        mp_obj_int_t *self = self_in;
+        return mpz_as_float(&self->mpz);
+    }
+}
+#endif
+
 #endif