diff --git a/ChangeLog b/ChangeLog index 329aeef870..29b800fd62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Oct 30 19:28:02 2006 NAKAMURA Usaku + + * bignum.c (rb_big2str0): use better approximation. + Mon Oct 30 18:35:33 2006 Yukihiro Matsumoto * bignum.c (rb_big2str0): wrong allocation length. a patch from diff --git a/bignum.c b/bignum.c index 0bfeffaa52..f0c3a0f63a 100644 --- a/bignum.c +++ b/bignum.c @@ -598,7 +598,7 @@ rb_big2str0(VALUE x, int base, int trim) switch (base) { case 2: break; case 3: - j = j * 647L / 1024; + j = j * 53L / 84 + 1; break; case 4: case 5: case 6: case 7: j /= 2; @@ -607,7 +607,7 @@ rb_big2str0(VALUE x, int base, int trim) j /= 3; break; case 10: case 11: case 12: case 13: case 14: case 15: - j = j * 241L / 800 + 1; + j = j * 28L / 93 + 1; break; case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: