Overload operators for MOnumbers in order to use gcd
This commit is contained in:
@@ -154,6 +154,128 @@ class MOnumber(MO):
|
||||
|
||||
return f"- {abs(self.value)}"
|
||||
|
||||
def __add__(self, other):
|
||||
""" Adding a MOnumber """
|
||||
try:
|
||||
return self.value + other.value
|
||||
except AttributeError:
|
||||
return self.value + other
|
||||
|
||||
def __radd__(self, other):
|
||||
""" rAdding a MOnumber """
|
||||
try:
|
||||
return self.value + other.value
|
||||
except AttributeError:
|
||||
return self.value + other
|
||||
|
||||
def __sub__(self, other):
|
||||
""" Subing a MOnumber """
|
||||
try:
|
||||
return self.value - other.value
|
||||
except AttributeError:
|
||||
return self.value - other
|
||||
|
||||
def __rsub__(self, other):
|
||||
""" rSubing a MOnumber """
|
||||
try:
|
||||
return self.value - other.value
|
||||
except AttributeError:
|
||||
return self.value - other
|
||||
|
||||
def __mul__(self, other):
|
||||
""" Multiply a MOnumber """
|
||||
try:
|
||||
return self.value * other.value
|
||||
except AttributeError:
|
||||
return self.value * other
|
||||
|
||||
def __rmul__(self, other):
|
||||
""" rMultiply a MOnumber """
|
||||
try:
|
||||
return self.value * other.value
|
||||
except AttributeError:
|
||||
return self.value * other
|
||||
|
||||
def __truediv__(self, other):
|
||||
""" Divide a MOnumber """
|
||||
try:
|
||||
return self.value / other.value
|
||||
except AttributeError:
|
||||
return self.value / other
|
||||
|
||||
def __rtruediv__(self, other):
|
||||
""" rDivide a MOnumber """
|
||||
try:
|
||||
return self.value / other.value
|
||||
except AttributeError:
|
||||
return self.value / other
|
||||
|
||||
def __floordiv__(self, other):
|
||||
""" Integer Division a MOnumber """
|
||||
try:
|
||||
return self.value // other.value
|
||||
except AttributeError:
|
||||
return self.value // other
|
||||
|
||||
def __rfloordiv__(self, other):
|
||||
""" rInteger Division a MOnumber """
|
||||
try:
|
||||
return other.value // self.value
|
||||
except AttributeError:
|
||||
return other // self.value
|
||||
|
||||
def __mod__(self, other):
|
||||
""" Moduling a MOnumber """
|
||||
try:
|
||||
return self.value % other.value
|
||||
except AttributeError:
|
||||
return self.value % other
|
||||
|
||||
def __rmod__(self, other):
|
||||
""" rModuling a MOnumber """
|
||||
try:
|
||||
return other.value % self.value
|
||||
except AttributeError:
|
||||
return other % self.value
|
||||
|
||||
def __eq__(self, other):
|
||||
""" == a MOnumber """
|
||||
try:
|
||||
return self.value == other.value
|
||||
except AttributeError:
|
||||
return self.value == other
|
||||
|
||||
def __lt__(self, other):
|
||||
""" < a MOnumber """
|
||||
try:
|
||||
return self.value < other.value
|
||||
except AttributeError:
|
||||
return self.value < other
|
||||
|
||||
def __le__(self, other):
|
||||
""" <= a MOnumber """
|
||||
try:
|
||||
return self.value <= other.value
|
||||
except AttributeError:
|
||||
return self.value <= other
|
||||
|
||||
def __gt__(self, other):
|
||||
""" > a MOnumber """
|
||||
try:
|
||||
return self.value > other.value
|
||||
except AttributeError:
|
||||
return self.value > other
|
||||
|
||||
def __ge__(self, other):
|
||||
""" >= a MOnumber """
|
||||
try:
|
||||
return self.value >= other.value
|
||||
except AttributeError:
|
||||
return self.value >= other
|
||||
|
||||
def __hash__(self):
|
||||
return self.value.__hash__()
|
||||
|
||||
class MOstr(MO):
|
||||
|
||||
""" Unknown math object like x or n"""
|
||||
|
Reference in New Issue
Block a user