# File lib/facets/more/quaternion.rb, line 459
  def exp
    # e^(r+uv)=exp(r)(cos(v)+u*sin(v))
    if is_real?; return Quaternion(Math::exp(@re)); end
    vec=self.vector; v=vec.abs; u = vec/v;
    Math::exp(@re)*(Math::cos(v)+u*Math::sin(v))
  end