X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/37b02d24c845fa3c75c48a99e5e658d772b72289..0fafeda3d1950de654a929dabf768af85b1be930:/pypol/linear.py diff --git a/pypol/linear.py b/pypol/linear.py index bd7037b..749f7c3 100644 --- a/pypol/linear.py +++ b/pypol/linear.py @@ -62,7 +62,7 @@ class Expression: for symbol, coefficient in coefficients if coefficient != 0] if len(coefficients) == 0: return Constant(constant) - elif len(coefficients) == 1: + elif len(coefficients) == 1 and constant == 0: symbol, coefficient = coefficients[0] if coefficient == 1: return Symbol(symbol) @@ -135,7 +135,7 @@ class Expression: return False def __bool__(self): - True + return True def __pos__(self): return self @@ -271,7 +271,7 @@ class Expression: self.constant == other.constant def __hash__(self): - return hash((self._coefficients, self._constant)) + return hash((tuple(sorted(self._coefficients.items())), self._constant)) def _toint(self): lcm = functools.reduce(lambda a, b: a*b // gcd(a, b),