 
 (defn pow
   "Raises `x` to `y`."
+  #?(:clj {:inline (fn [x y] `(Math/pow ~x ~y))})
   ^double [^double x ^double y]
   #?(:clj  (Math/pow x y)
      :cljs (.pow js/Math x y)))
 
 (defn floor
   "Returns the floor of `x`."
+  #?(:clj {:inline (fn [x] `(Math/floor ~x))})
   ^double [^double x]
   #?(:clj  (Math/floor x)
      :cljs (.floor js/Math x)))
 
 (defn abs
   "Returns the absolute value of `x`."
+  #?(:clj {:inline (fn [x] `(Math/abs ~x))})
   ^double [^double x]
   #?(:clj  (Math/abs x)
      :cljs (.abs js/Math x)))
 
 (defn round
   "Rounds `x`."
+  #?(:clj {:inline (fn [x] `(Math/round ~x))})
   ^long [^double x]
   #?(:clj  (Math/round x)
      :cljs (.round js/Math x)))


(defn rand
  "Returns a random double value."
  ^double []
  (unchecked-double
    #?(:clj  (Math/random)


(defn from
  "Creates a new long value."
  #?(:clj {:inline (fn [x] x)})
  (^long [^long x]
   #?(:clj  x
      :cljs (.fromNumber goog.math.Long x)))
