aboutsummaryrefslogtreecommitdiffstats
path: root/math.c
diff options
context:
space:
mode:
Diffstat (limited to 'math.c')
-rw-r--r--math.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/math.c b/math.c
index d9c76334c8..e621d1af77 100644
--- a/math.c
+++ b/math.c
@@ -442,7 +442,7 @@ math_log(int argc, VALUE *argv)
{
VALUE x, base;
double d0, d;
- size_t numbits = 0;
+ size_t numbits;
rb_scan_args(argc, argv, "11", &x, &base);
@@ -451,6 +451,9 @@ math_log(int argc, VALUE *argv)
numbits -= DBL_MANT_DIG;
x = rb_big_rshift(x, SIZET2NUM(numbits));
}
+ else {
+ numbits = 0;
+ }
Need_Float(x);
d0 = RFLOAT_VALUE(x);
@@ -501,13 +504,16 @@ static VALUE
math_log2(VALUE obj, VALUE x)
{
double d0, d;
- size_t numbits = 0;
+ size_t numbits;
if (RB_BIGNUM_TYPE_P(x) && RBIGNUM_POSITIVE_P(x) &&
DBL_MAX_EXP <= (numbits = rb_absint_numwords(x, 1, NULL))) {
numbits -= DBL_MANT_DIG;
x = rb_big_rshift(x, SIZET2NUM(numbits));
}
+ else {
+ numbits = 0;
+ }
Need_Float(x);
d0 = RFLOAT_VALUE(x);
@@ -540,13 +546,16 @@ static VALUE
math_log10(VALUE obj, VALUE x)
{
double d0, d;
- size_t numbits = 0;
+ size_t numbits;
if (RB_BIGNUM_TYPE_P(x) && RBIGNUM_POSITIVE_P(x) &&
DBL_MAX_EXP <= (numbits = rb_absint_numwords(x, 1, NULL))) {
numbits -= DBL_MANT_DIG;
x = rb_big_rshift(x, SIZET2NUM(numbits));
}
+ else {
+ numbits = 0;
+ }
Need_Float(x);
d0 = RFLOAT_VALUE(x);