From 5a0502bdf5da0b1cdb91fb1d0dfa08b4c4a4db0b Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 13 Aug 2024 14:13:02 -0400 Subject: Fix some edge cases --- compile.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'compile.c') diff --git a/compile.c b/compile.c index 8c7dc6df..1053b739 100644 --- a/compile.c +++ b/compile.c @@ -1386,8 +1386,10 @@ CORD compile(env_t *env, ast_t *ast) switch (Match(ast, Int)->bits) { case 0: - if ((mpz_cmp_si(i, BIGGEST_SMALL_INT) < 0) && (mpz_cmp_si(i, -BIGGEST_SMALL_INT) > 0)) { + if (mpz_cmpabs_ui(i, BIGGEST_SMALL_INT) <= 0) { return CORD_asprintf("I(%s)", str); + } else if (mpz_cmp_si(i, INT64_MAX) <= 0 && mpz_cmp_si(i, INT64_MIN) >= 0) { + return CORD_asprintf("Int$from_i64(%s)", str); } else { return CORD_asprintf("Int$from_text(\"%s\")", str); } -- cgit v1.2.3