def *(other)
      if other.is_a?(InternalComplex) or other.is_a?(Complex)
        InternalComplex.new @real * other.real - @imag * other.imag,
                    @real * other.imag + @imag * other.real
      elsif InternalComplex.generic? other
        InternalComplex.new @real * other, @imag * other
      else
        x, y = other.coerce self
        x * y
      end
    end
def *(other)
      if other.is_a?(InternalComplex) or other.is_a?(Complex)
        InternalComplex.new @real * other.real - @imag * other.imag,
                    @real * other.imag + @imag * other.real
      elsif InternalComplex.generic? other
        InternalComplex.new @real * other, @imag * other
      else
        x, y = other.coerce self
        x * y
      end
    end
Multiply complex values

 @param [Object] Second operand for binary operation.

 @return [InternalComplex] The result

 @private