def __pow__(self, n): r""" Raise this element to the power n. EXAMPLES:: sage: K.<a> = NumberField(x^3 - 3*x + 8) sage: C=K.class_group() sage: c = C(2, a) sage: c^2 Fractional ideal class (4, a) sage: c^3 Trivial principal fractional ideal class sage: c^1000 Fractional ideal class (2, a) sage: (c^2)^2 Fractional ideal class (2, a) """ # We use MonoidElement's __pow__ routine, since that does # repeated squaring, and hence the ideal gets reduced as # we go along; actually computing self._value ** n would # be disastrous. n = n % self.order() return MonoidElement.__pow__(self, n)
def __pow__(self, n): r""" Raise this element to the power n. EXAMPLE:: sage: K.<a> = NumberField(x^3 - 3*x + 8) sage: C=K.class_group() sage: c = C(2, a) sage: c^2 Fractional ideal class (2, a^2 + 2*a - 1) sage: c^3 Trivial principal fractional ideal class sage: c^1000 Fractional ideal class (2, a) sage: (c^2)^2 Fractional ideal class (2, a) """ # We use MonoidElement's __pow__ routine, since that does # repeated squaring, and hence the ideal gets reduced as # we go along; actually computing self._value ** n would # be disastrous. n = n % self.order() return MonoidElement.__pow__(self, n)