diff options
| -rw-r--r-- | src/stdlib/bigint.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/stdlib/bigint.c b/src/stdlib/bigint.c index f36cbe6a..7af1fa32 100644 --- a/src/stdlib/bigint.c +++ b/src/stdlib/bigint.c @@ -110,8 +110,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(Int_mpz(y), x.small); - else if (y.small & 1) return mpz_cmp_si(Int_mpz(x), y.small); + else if (x.small & 1) return -mpz_cmp_si(Int_mpz(y), (x.small >> 2)); + else if (y.small & 1) return mpz_cmp_si(Int_mpz(x), (y.small >> 2)); else return x.big == y.big ? 0 : mpz_cmp(Int_mpz(x), Int_mpz(y)); } |
