summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-04-03 13:55:13 +0000
committerRich Hickey <richhickey@gmail.com>2008-04-03 13:55:13 +0000
commit790202489f743796c20536daa26e77091720cd5c (patch)
treec1f09496a730e86dacde684307aeac97122667b6 /src
parent19e048471fdcdaf9b7f13a9c486ec22c2361234f (diff)
throw exception on divide by zero
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Num.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Num.java b/src/jvm/clojure/lang/Num.java
index 7c5e0526..71596329 100644
--- a/src/jvm/clojure/lang/Num.java
+++ b/src/jvm/clojure/lang/Num.java
@@ -95,7 +95,10 @@ abstract public Num multiply(BigInteger x);
abstract public Num multiply(RatioNum x);
static public Num divide(Object x, Object y){
- return Num.from(x).divideBy(Num.from(y));
+ Num ny = Num.from(y);
+ if(ny.zerop())
+ throw new ArithmeticException("Divide by zero");
+ return Num.from(x).divideBy(ny);
}
abstract public Num divideBy(Num rhs);
@@ -132,6 +135,8 @@ static public Object[] truncateBigints(BigInteger n, BigInteger d){
}
static public Num divide(BigInteger n, BigInteger d){
+ if(d.equals(BigInteger.ZERO))
+ throw new ArithmeticException("Divide by zero");
BigInteger gcd = n.gcd(d);
if(gcd.equals(BigInteger.ZERO))
return Num.ZERO;