Source code for gana.value.bigm

"""BigM"""

from typing import Self


[docs] class M: """BigM, infinity basically""" def __init__(self, _: float = None, neg: bool = False): # big value if needed self._ = _ # if this is a negative big M self.neg = neg if neg: self.name = r"M_{-}" else: self.name = r"M" def __repr__(self): return self.name def __hash__(self): try: return hash(self.name) except AttributeError: # Fallback for uninitialized state during unpickling return id(self) def __len__(self): return 1 def __pos__(self): return self def __add__(self, other: Self | float): return self def __radd__(self, other: Self | float): return self def __sub__(self, other: Self): return self def __mul__(self, other: Self): return self def __rmul__(self, other: Self): return self def __truediv__(self, other: Self): return self def __rtruediv__(self, other: Self): return 0 def __gt__(self, other: Self): if isinstance(other, (float, int)): return True def __ge__(self, other: Self): return self > other def __lt__(self, other: Self): return not self > other def __le__(self, other: Self): return not self > other def __eq__(self, other: Self): return False def __ne__(self, other: Self): return not self == other