summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-06-16 09:18:22 -0400
committerRich Hickey <richhickey@gmail.com>2010-06-16 09:18:22 -0400
commite4a76e058ceed9b152ffd00b3f83e2800207bc25 (patch)
treefa277d6397427e7a24bcbcbcac123d0d26930dd2
parent0deef3ebaac4b897c1b5f4cbb583665cc2d7383b (diff)
return doubles from quotient/remainder on doubles
-rw-r--r--src/jvm/clojure/lang/Numbers.java12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/jvm/clojure/lang/Numbers.java b/src/jvm/clojure/lang/Numbers.java
index 722791fd..6f4f16bf 100644
--- a/src/jvm/clojure/lang/Numbers.java
+++ b/src/jvm/clojure/lang/Numbers.java
@@ -147,28 +147,28 @@ static public Number remainder(Number x, Number y){
return ops(x).combine(yops).remainder(x, y);
}
-static Number quotient(double n, double d){
+static double quotient(double n, double d){
double q = n / d;
if(q <= Long.MAX_VALUE && q >= Long.MIN_VALUE)
{
- return box((long) q);
+ return (double)(long) q;
}
else
{ //bigint quotient
- return new BigDecimal(q).toBigInteger();
+ return new BigDecimal(q).toBigInteger().doubleValue();
}
}
-static Number remainder(double n, double d){
+static double remainder(double n, double d){
double q = n / d;
if(q <= Long.MAX_VALUE && q >= Long.MIN_VALUE)
{
- return Double.valueOf((n - ((int) q) * d));
+ return (n - ((long) q) * d);
}
else
{ //bigint quotient
Number bq = new BigDecimal(q).toBigInteger();
- return Double.valueOf((n - bq.doubleValue() * d));
+ return (n - bq.doubleValue() * d);
}
}