summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--bignum.c10
2 files changed, 13 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index ed1e534f7d..92a464ee60 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Jun 21 19:38:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BDIGMAX): Use BIGRAD.
+ (BIGLO): Use BDIGMAX.
+ (bigdivrem1): Ditto.
+ (bigor_int): Ditto.
+ (rb_big_or): Ditto.
+
Fri Jun 21 19:18:48 2013 Tanaka Akira <akr@fsij.org>
* pack.c (pack_pack): Move the implementation for 'c' directive after
diff --git a/bignum.c b/bignum.c
index 730eb6a6af..cc26f072a8 100644
--- a/bignum.c
+++ b/bignum.c
@@ -45,8 +45,8 @@ static VALUE big_three = Qnil;
#endif
#define BIGUP(x) ((BDIGIT_DBL)(x) << BITSPERDIG)
#define BIGDN(x) RSHIFT((x),BITSPERDIG)
-#define BIGLO(x) ((BDIGIT)((x) & (BIGRAD-1)))
-#define BDIGMAX ((BDIGIT)-1)
+#define BIGLO(x) ((BDIGIT)((x) & BDIGMAX))
+#define BDIGMAX ((BDIGIT)(BIGRAD-1))
#define BIGZEROP(x) (RBIGNUM_LEN(x) == 0 || \
(BDIGITS(x)[0] == 0 && \
@@ -3834,7 +3834,7 @@ bigdivrem1(void *ptr)
bds->j = j;
return 0;
}
- if (zds[j] == yds[ny-1]) q = (BDIGIT)BIGRAD-1;
+ if (zds[j] == yds[ny-1]) q = BDIGMAX;
else q = (BDIGIT)((BIGUP(zds[j]) + zds[j-1])/yds[ny-1]);
if (q) {
i = bds->nyzero; num = 0; t2 = 0;
@@ -4542,7 +4542,7 @@ bigor_int(VALUE x, long y)
}
#endif
while (i < xn) {
- zds[i] = sign?xds[i]:(BDIGIT)(BIGRAD-1);
+ zds[i] = sign?xds[i]:BDIGMAX;
i++;
}
if (!RBIGNUM_SIGN(z)) get2comp(z);
@@ -4603,7 +4603,7 @@ rb_big_or(VALUE xx, VALUE yy)
zds[i] = ds1[i] | ds2[i];
}
for (; i<l2; i++) {
- zds[i] = sign?ds2[i]:(BDIGIT)(BIGRAD-1);
+ zds[i] = sign?ds2[i]:BDIGMAX;
}
if (!RBIGNUM_SIGN(z)) get2comp(z);
return bignorm(z);