Skip to content

Commit a9dc9b8

Browse files
committed
py: Fix comparison of minus-zero long int.
1 parent e6a118e commit a9dc9b8

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

py/mpz.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,10 @@ bool mpz_is_even(const mpz_t *z) {
820820
}
821821

822822
int mpz_cmp(const mpz_t *z1, const mpz_t *z2) {
823+
// to catch comparison of -0 with +0
824+
if (z1->len == 0 && z2->len == 0) {
825+
return 0;
826+
}
823827
int cmp = (int)z2->neg - (int)z1->neg;
824828
if (cmp != 0) {
825829
return cmp;

tests/basics/int_big_zeroone.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,17 @@
1212
print([~c for c in cases])
1313
print([c >> 1 for c in cases])
1414
print([c << 1 for c in cases])
15+
16+
# comparison of 0/-0/+0
17+
print(long_zero == 0)
18+
print(long_neg_zero == 0)
19+
print(long_one - 1 == 0)
20+
print(long_neg_one + 1 == 0)
21+
print(long_zero < 1)
22+
print(long_zero < -1)
23+
print(long_zero > 1)
24+
print(long_zero > -1)
25+
print(long_neg_zero < 1)
26+
print(long_neg_zero < -1)
27+
print(long_neg_zero > 1)
28+
print(long_neg_zero > -1)

0 commit comments

Comments
 (0)