py: Fix comparison of minus-zero long int.
This commit is contained in:
parent
e6a118ee85
commit
a9dc9b8f6d
4
py/mpz.c
4
py/mpz.c
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue