summaryrefslogtreecommitdiffstats
path: root/bignum.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-06-22 08:29:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-06-22 08:29:58 +0000
commit623f789e46a571d4d18ba5a7ae5fd657e5d34a0f (patch)
tree10e665c60414c3070ce957e5c534e30ed499bc2d /bignum.c
parent2c4dd0158164639963d6957bb20a5606a807c5a6 (diff)
downloadruby-623f789e46a571d4d18ba5a7ae5fd657e5d34a0f.tar.gz
ruby-623f789e46a571d4d18ba5a7ae5fd657e5d34a0f.tar.xz
ruby-623f789e46a571d4d18ba5a7ae5fd657e5d34a0f.zip
2000-06-22
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r--bignum.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/bignum.c b/bignum.c
index dabb96a82..ec36a0946 100644
--- a/bignum.c
+++ b/bignum.c
@@ -451,8 +451,8 @@ rb_big_to_i(x)
return bignorm(x);
}
-VALUE
-rb_dbl2big(d)
+static VALUE
+dbl2big(d)
double d;
{
unsigned long i = 0;
@@ -481,7 +481,14 @@ rb_dbl2big(d)
digits[i] = (USHORT)c;
}
- return bignorm(z);
+ return z;
+}
+
+VALUE
+rb_dbl2big(d)
+ double d;
+{
+ return bignorm(dbl2big(d));
}
double
@@ -521,7 +528,7 @@ rb_big_cmp(x, y)
break;
case T_FLOAT:
- y = rb_dbl2big(RFLOAT(y)->value);
+ y = dbl2big(RFLOAT(y)->value);
break;
default:
@@ -553,7 +560,7 @@ rb_big_eq(x, y)
case T_BIGNUM:
break;
case T_FLOAT:
- y = rb_dbl2big(RFLOAT(y)->value);
+ y = dbl2big(RFLOAT(y)->value);
break;
default:
return Qfalse;
@@ -894,7 +901,7 @@ bigdivmod(x, y, div, mod, modulo)
if (modulo && RBIGNUM(x)->sign != RBIGNUM(y)->sign) {
long len = ny;
zds = BDIGITS(*mod);
- while (len-- && !zds[len]);
+ while (len && !zds[len]) len--;
if (len > 0) {
*mod = bigadd(*mod, y, 1);
return;
@@ -946,7 +953,7 @@ rb_big_modulo(x, y, modulo)
break;
case T_FLOAT:
- y = rb_dbl2big(RFLOAT(y)->value);
+ y = dbl2big(RFLOAT(y)->value);
break;
default:
@@ -983,7 +990,7 @@ rb_big_divmod(x, y)
break;
case T_FLOAT:
- y = rb_dbl2big(RFLOAT(y)->value);
+ y = dbl2big(RFLOAT(y)->value);
break;
case T_BIGNUM:
@@ -994,7 +1001,7 @@ rb_big_divmod(x, y)
}
bigdivmod(x, y, &div, &mod, 1);
- return rb_assoc_new(div, mod);;
+ return rb_assoc_new(div, mod);
}
VALUE