cljs.math/floor-div
function | since v1.11.50 | Edit |
(floor-div x y)
Source docstring:
Integer division that rounds to negative infinity (as opposed to zero).
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#floorDiv-long-long-
(defn ^number floor-div
{:added "1.11.10"}
[x y]
(if-not (and ^boolean (js/Number.isSafeInteger x) ^boolean (js/Number.isSafeInteger y))
(throw (ex-info "floor-div called with non-safe-integer arguments"
{:x-int? (js/Number.isSafeInteger x) :y-int? (js/Number.isSafeInteger y)}))
(let [r (long (/ x y))]
(if (and (xor (< x 0) (< y 0)) (not (== (* r y) x)))
(dec r)
r))))