I suggest to add a primitive for '**'. Something like
def __pow__(self, exponent):
try:
exp = int(exponent)
except:
raise TypeError("exponent not convertable to int: "
+ `exponent`)
temp = self.copy()
if exp < 1:
while exp < 1:
temp /= self
exp += 1
else:
while exp > 1:
temp *= self
exp -= 1
return temp