# File cartesian.rb, line 140 def **(fixnum) if fixnum < 0 raise ArgumentError, "negative power" elsif fixnum == 0 return [] elsif fixnum == 1 return self else iter = CartesianIterator.new(self, self) (fixnum-2).times do iter.product!(self) end iter end end