# File lib/facets/more/quaternion.rb, line 370
  def * (other)
    if other.kind_of?(Quaternion)
      Quaternion(@re*other.re-@im*other.im-@jm*other.jm-@km*other.km,
           @re*other.im+@im*other.re+@jm*other.km-@km*other.jm,
           @re*other.jm-@im*other.km+@jm*other.re+@km*other.im,
           @re*other.km+@im*other.jm-@jm*other.im+@km*other.re)
    elsif other.kind_of?(Complex)
      Quaternion(@re*other.real - @im*other.image,
           @re*other.image + @im*other.real,
           @jm*other.real + @km*other.image,
           @km*other.real - @jm*other.image)
    elsif Complex.generic?(other)
      Quaternion(@re * other, @im * other, @jm * other, @km * other)
    else x , y = other.coerce(self); x * y
    end
  end