From 8875c534dcbfbef405ad67170e7b51c7c5a65ab5 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sat, 6 Jan 2024 09:14:01 -0800 Subject: [PATCH] Issue #519 - allow fixnum results from Cyc_div_op Need to extend this to fast_div, but this is another good edge case. --- runtime.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runtime.c b/runtime.c index 9532a263..c1e7195e 100644 --- a/runtime.c +++ b/runtime.c @@ -4241,6 +4241,12 @@ object Cyc_div_op(void *data, common_type * x, object y) } x->double_t.tag = double_tag; x->double_t.value = ((double)x->integer_t.value) / (obj_obj2int(y)); + + if (x->double_t.value == round(x->double_t.value)) { + int tmp = x->double_t.value; + x->integer_t.tag = integer_tag; + x->integer_t.value = tmp; + } } else if (tx == double_tag && ty == -1) { x->double_t.value = x->double_t.value / (obj_obj2int(y)); } else if (tx == integer_tag && ty == integer_tag) {