# 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