aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/stdlib/bigint.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/stdlib/bigint.c b/src/stdlib/bigint.c
index e2935332..8bffbaf1 100644
--- a/src/stdlib/bigint.c
+++ b/src/stdlib/bigint.c
@@ -72,8 +72,8 @@ static bool Int$is_none(const void *i, const TypeInfo_t *info) {
public
PUREFUNC int32_t Int$compare_value(const Int_t x, const Int_t y) {
if (likely(x.small & y.small & 1L)) return (x.small > y.small) - (x.small < y.small);
- else if (x.small & 1) return -mpz_cmp_si(y.big, x.small);
- else if (y.small & 1) return mpz_cmp_si(x.big, y.small);
+ else if (x.small & 1) return -mpz_cmp_si(y.big, (x.small >> 2));
+ else if (y.small & 1) return mpz_cmp_si(x.big, (y.small >> 2));
else return x.big == y.big ? 0 : mpz_cmp(x.big, y.big);
}