Module garoupa.algebra.abs.element
Classes
class Element (i: int, order: int)-
Expand source code
@dataclass class Element(ABC): i: int order: int _id = None _hosh = None def __post_init__(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2, 64**32).bits - 1 192.0 """ self.name = f"{self.__class__.__name__.lower()}_{self.i}" self.bits = log(self.order, 2) @abstractmethod def __mul__(self, other): pass def __xor__(self, other): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5) ^ 3 ds4096 """ return reduce(operator.mul, [self] * other) __pow__ = __xor__ def __repr__(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**3, 64**5) ^ 3 ds262144 """ return self.name def __eq__(self, other): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2, 64**5) ^ 3 == Ds(4096, 64**5) True """ return self.name == other.name def __hash__(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> isinstance(hash(Ds(64**2,64**5)), int) True """ return hash(repr(self)) @property def hosh(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).hosh.id '0_000100000_____________________________' """ if self._hosh is None: self._hosh = Hosh.fromn(self.i) return self._hosh @property def id(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).id '0_000100000_____________________________' """ if self._id is None: self._id = self.hosh.id return self._idElement(i: int, order: int)
Ancestors
- abc.ABC
Subclasses
Instance variables
prop hosh-
Expand source code
@property def hosh(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).hosh.id '0_000100000_____________________________' """ if self._hosh is None: self._hosh = Hosh.fromn(self.i) return self._hoshUsage:
>>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).hosh.id '0_000100000_____________________________' var i : intprop id-
Expand source code
@property def id(self): """ Usage: >>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).id '0_000100000_____________________________' """ if self._id is None: self._id = self.hosh.id return self._idUsage:
>>> from garoupa.algebra.dihedral import Ds >>> Ds(64**2,64**5).id '0_000100000_____________________________' var order : int