diff options
author | Damien George <damien.p.george@gmail.com> | 2015-01-27 17:47:38 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-01-27 17:47:38 +0000 |
commit | a9dc9b8f6dc29d842f0a7427cc3cf068ae1cfbea (patch) | |
tree | c64b19fa0256234a19a937ac3a057af470f5324b | |
parent | e6a118ee85b35eb443057a2b6dbc87059deff6dc (diff) | |
download | micropython-a9dc9b8f6dc29d842f0a7427cc3cf068ae1cfbea.tar.gz micropython-a9dc9b8f6dc29d842f0a7427cc3cf068ae1cfbea.zip |
py: Fix comparison of minus-zero long int.
-rw-r--r-- | py/mpz.c | 4 | ||||
-rw-r--r-- | tests/basics/int_big_zeroone.py | 14 |
2 files changed, 18 insertions, 0 deletions
@@ -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; diff --git a/tests/basics/int_big_zeroone.py b/tests/basics/int_big_zeroone.py index e467714bdf..7e0b7a720e 100644 --- a/tests/basics/int_big_zeroone.py +++ b/tests/basics/int_big_zeroone.py @@ -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) |