diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/clj/clojure/core.clj | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 243bcd22..81bee135 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -1930,14 +1930,12 @@ (instance? Byte n))) (defn mod - "modulus of num and div." - [num div] - (cond - (or (not (integer? num)) (not (integer? div))) - (throw (IllegalArgumentException. - "mod requires two integers")) - (or (< num 0 div) (< div 0 num)) (+ (rem num div) div) - :else (rem num div))) + "Modulus of num and div. Truncates toward negative infinity." + [num div] + (let [m (rem num div)] + (if (or (zero? m) (pos? (* num div))) + m + (+ m div)))) (defn ratio? "Returns true if n is a Ratio" |