py: Fix comparison of minus-zero long int.

stackless
Damien George 2015-01-27 17:47:38 +00:00
parent e6a118ee85
commit a9dc9b8f6d
2 changed files with 18 additions and 0 deletions

View File

@ -820,6 +820,10 @@ bool mpz_is_even(const mpz_t *z) {
}
int mpz_cmp(const mpz_t *z1, const mpz_t *z2) {
// to catch comparison of -0 with +0
if (z1->len == 0 && z2->len == 0) {
return 0;
}
int cmp = (int)z2->neg - (int)z1->neg;
if (cmp != 0) {
return cmp;

View File

@ -12,3 +12,17 @@ print([-c for c in cases])
print([~c for c in cases])
print([c >> 1 for c in cases])
print([c << 1 for c in cases])
# comparison of 0/-0/+0
print(long_zero == 0)
print(long_neg_zero == 0)
print(long_one - 1 == 0)
print(long_neg_one + 1 == 0)
print(long_zero < 1)
print(long_zero < -1)
print(long_zero > 1)
print(long_zero > -1)
print(long_neg_zero < 1)
print(long_neg_zero < -1)
print(long_neg_zero > 1)
print(long_neg_zero > -1)