cljs.math/next-down

functionsince v1.11.50Edit
(next-down d)

Source docstring:
Returns the adjacent double of d in the direction of ##-Inf.
If d is ##NaN => ##NaN
If d is ##Inf => Number/MAX_VALUE
If d is zero => -Number/MIN_VALUE
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#nextDown-double-
Source code @ clojurescript:src/main/cljs/cljs/math.cljs
(defn ^number next-down
  {:added "1.11.10"}
  [d]
  (cond
    (or ^boolean (js/isNaN d) (== ##-Inf d)) d
    (zero? d) (- js/Number.MIN_VALUE)
    :default
    (let [a (js/ArrayBuffer. 8)
          f (js/Float64Array. a)
          i (js/Uint32Array. a)
          _ (aset f 0 d)
          ht (aget i HI)
          lt (aget i LO)
          [hr lr] (if (> d 0)
                    (add64 ht lt 0xFFFFFFFF 0xFFFFFFFF)
                    (add64 ht lt 0 1))]
      (aset i HI hr)
      (aset i LO lr)
      (aget f 0))))