py/mpz: Fix bignum anding of large negative with smaller positive int.
This commit is contained in:
parent
a81539db25
commit
2065373f67
8
py/mpz.c
8
py/mpz.c
@ -239,12 +239,8 @@ STATIC mp_uint_t mpn_and_neg(mpz_dig_t *idig, const mpz_dig_t *jdig, mp_uint_t j
|
|||||||
carry >>= DIG_SIZE;
|
carry >>= DIG_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (carry != 0) {
|
// remove trailing zeros
|
||||||
*idig = carry;
|
for (--idig; idig >= oidig && *idig == 0; --idig) {
|
||||||
} else {
|
|
||||||
// remove trailing zeros
|
|
||||||
for (--idig; idig >= oidig && *idig == 0; --idig) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return idig + 1 - oidig;
|
return idig + 1 - oidig;
|
||||||
|
@ -24,3 +24,5 @@ print(-2345678901234567890123456789 & a)
|
|||||||
print((-a) & a)
|
print((-a) & a)
|
||||||
print((-a) & 0xffffffff)
|
print((-a) & 0xffffffff)
|
||||||
print((-a) & 0xffffffffffffffffffffffffffffffff)
|
print((-a) & 0xffffffffffffffffffffffffffffffff)
|
||||||
|
print((-a) & 2)
|
||||||
|
print((-(1 << 70)) & 2)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user