Reimplemented in FractionField, GF, LocalRing, M2::ConcreteRing< RingType >, M2::ConcreteRing< M2::ARingCCC >, M2::ConcreteRing< M2::ARingRRR >, M2FreeAlgebra, M2FreeAlgebraQuotient, PolyRing, PolyRingQuotient, RingZZ, SchurRing, SkewPolynomialRing, SolvableAlgebra, WeylAlgebra, and Z_mod.
Definition at line 166 of file ring.cpp.
167{
168
169 ring_elem ff = gg;
170 if (n == 0)
return one();
171 if (n < 0)
172 {
173 n = -n;
176 {
177 ERROR(
"negative power of noninvertible element requested");
178 return ff;
179 }
180 }
181
182
185 ring_elem tmp;
186
187 for (;;)
188 {
189 if ((n % 2) != 0)
190 {
192 prod = tmp;
193 }
194 n >>= 1;
195 if (n == 0) { return prod; }
196 else
197 {
200 }
201 }
202}
virtual ring_elem invert(const ring_elem f) const =0
virtual ring_elem from_long(long n) const =0
virtual ring_elem copy(const ring_elem f) const =0
virtual bool is_zero(const ring_elem f) const =0
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
static CanonicalForm base
References base, copy(), ERROR, from_long(), invert(), is_zero(), mult(), and one().