summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorkimu_shu <[email protected]>2013-05-26 09:43:30 +0900
committerkimu_shu <[email protected]>2013-05-26 10:09:17 +0900
commite720782f815b809a692818851582be019afe52a9 (patch)
treea3c25239fb5afe2a33708e38d185a142f1c543a3 /src/numeric.c
parentd78f23d28b4706e58622493de60e17818b491fde (diff)
downloadmruby-e720782f815b809a692818851582be019afe52a9.tar.gz
mruby-e720782f815b809a692818851582be019afe52a9.zip
Add MRB_WORD_BOXING mode (represent mrb_value as a word)
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/src/numeric.c b/src/numeric.c
index 14b4929e0..6b118dfb4 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -65,7 +65,7 @@ num_uplus(mrb_state *mrb, mrb_value num)
static mrb_value
num_uminus(mrb_state *mrb, mrb_value num)
{
- return mrb_float_value((mrb_float)0 - mrb_to_flo(mrb, num));
+ return mrb_float_value(mrb, (mrb_float)0 - mrb_to_flo(mrb, num));
}
static mrb_value
@@ -95,7 +95,7 @@ num_pow(mrb_state *mrb, mrb_value x)
d = pow(mrb_to_flo(mrb, x), mrb_to_flo(mrb, y));
if (both_int && FIXABLE(d))
return mrb_fixnum_value((mrb_int)d);
- return mrb_float_value(d);
+ return mrb_float_value(mrb, d);
}
/* 15.2.8.3.4 */
@@ -112,7 +112,7 @@ num_pow(mrb_state *mrb, mrb_value x)
mrb_value
mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y)
{
- return mrb_float_value(mrb_to_flo(mrb, x) / mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, mrb_to_flo(mrb, x) / mrb_to_flo(mrb, y));
}
/* 15.2.9.3.19(x) */
@@ -129,7 +129,7 @@ num_div(mrb_state *mrb, mrb_value x)
mrb_float y;
mrb_get_args(mrb, "f", &y);
- return mrb_float_value(mrb_to_flo(mrb, x) / y);
+ return mrb_float_value(mrb, mrb_to_flo(mrb, x) / y);
}
/*
@@ -297,7 +297,7 @@ flo_minus(mrb_state *mrb, mrb_value x)
mrb_value y;
mrb_get_args(mrb, "o", &y);
- return mrb_float_value(mrb_float(x) - mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y));
}
/* 15.2.9.3.3 */
@@ -315,7 +315,7 @@ flo_mul(mrb_state *mrb, mrb_value x)
mrb_value y;
mrb_get_args(mrb, "o", &y);
- return mrb_float_value(mrb_float(x) * mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y));
}
static void
@@ -366,7 +366,7 @@ flo_mod(mrb_state *mrb, mrb_value x)
fy = mrb_to_flo(mrb, y);
flodivmod(mrb, mrb_float(x), fy, 0, &mod);
- return mrb_float_value(mod);
+ return mrb_float_value(mrb, mod);
}
/* 15.2.8.3.16 */
@@ -545,7 +545,7 @@ flo_floor(mrb_state *mrb, mrb_value num)
mrb_float f = floor(mrb_float(num));
if (!FIXABLE(f)) {
- return mrb_float_value(f);
+ return mrb_float_value(mrb, f);
}
return mrb_fixnum_value((mrb_int)f);
}
@@ -570,7 +570,7 @@ flo_ceil(mrb_state *mrb, mrb_value num)
mrb_float f = ceil(mrb_float(num));
if (!FIXABLE(f)) {
- return mrb_float_value(f);
+ return mrb_float_value(mrb, f);
}
return mrb_fixnum_value((mrb_int)f);
}
@@ -642,7 +642,7 @@ flo_round(mrb_state *mrb, mrb_value num)
if (ndigits < 0) number *= f;
else number /= f;
}
- if (ndigits > 0) return mrb_float_value(number);
+ if (ndigits > 0) return mrb_float_value(mrb, number);
return mrb_fixnum_value((mrb_int)number);
}
@@ -666,7 +666,7 @@ flo_truncate(mrb_state *mrb, mrb_value num)
if (f < 0.0) f = ceil(f);
if (!FIXABLE(f)) {
- return mrb_float_value(f);
+ return mrb_float_value(mrb, f);
}
return mrb_fixnum_value((mrb_int)f);
}
@@ -750,11 +750,11 @@ mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y)
return mrb_fixnum_value(a*b);
c = a * b;
if (a != 0 && c/a != b) {
- return mrb_float_value((mrb_float)a*(mrb_float)b);
+ return mrb_float_value(mrb, (mrb_float)a*(mrb_float)b);
}
return mrb_fixnum_value(c);;
}
- return mrb_float_value((mrb_float)a * mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y));
}
/* 15.2.8.3.3 */
@@ -826,7 +826,7 @@ fix_mod(mrb_state *mrb, mrb_value x)
mrb_int mod;
if (mrb_fixnum(y) == 0) {
- return mrb_float_value(str_to_mrb_float("nan"));
+ return mrb_float_value(mrb, str_to_mrb_float("nan"));
}
fixdivmod(mrb, a, mrb_fixnum(y), 0, &mod);
return mrb_fixnum_value(mod);
@@ -835,7 +835,7 @@ fix_mod(mrb_state *mrb, mrb_value x)
mrb_float mod;
flodivmod(mrb, (mrb_float)a, mrb_to_flo(mrb, y), 0, &mod);
- return mrb_float_value(mod);
+ return mrb_float_value(mrb, mod);
}
}
@@ -856,8 +856,8 @@ fix_divmod(mrb_state *mrb, mrb_value x)
mrb_int div, mod;
if (mrb_fixnum(y) == 0) {
- return mrb_assoc_new(mrb, mrb_float_value(str_to_mrb_float("inf")),
- mrb_float_value(str_to_mrb_float("nan")));
+ return mrb_assoc_new(mrb, mrb_float_value(mrb, str_to_mrb_float("inf")),
+ mrb_float_value(mrb, str_to_mrb_float("nan")));
}
fixdivmod(mrb, mrb_fixnum(x), mrb_fixnum(y), &div, &mod);
return mrb_assoc_new(mrb, mrb_fixnum_value(div), mrb_fixnum_value(mod));
@@ -867,8 +867,8 @@ fix_divmod(mrb_state *mrb, mrb_value x)
mrb_value a, b;
flodivmod(mrb, (mrb_float)mrb_fixnum(x), mrb_to_flo(mrb, y), &div, &mod);
- a = mrb_float_value((mrb_int)div);
- b = mrb_float_value(mod);
+ a = mrb_float_value(mrb, (mrb_int)div);
+ b = mrb_float_value(mrb, mod);
return mrb_assoc_new(mrb, a, b);
}
}
@@ -1121,7 +1121,7 @@ fix_to_f(mrb_state *mrb, mrb_value num)
val = (mrb_float)mrb_fixnum(num);
- return mrb_float_value(val);
+ return mrb_float_value(mrb, val);
}
/*
@@ -1175,11 +1175,11 @@ mrb_fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y)
c = a + b;
if (((a < 0) ^ (b < 0)) == 0 && (a < 0) != (c < 0)) {
/* integer overflow */
- return mrb_float_value((mrb_float)a + (mrb_float)b);
+ return mrb_float_value(mrb, (mrb_float)a + (mrb_float)b);
}
return mrb_fixnum_value(c);
}
- return mrb_float_value((mrb_float)a + mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, (mrb_float)a + mrb_to_flo(mrb, y));
}
/* 15.2.8.3.1 */
@@ -1213,11 +1213,11 @@ mrb_fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y)
c = a - b;
if (((a < 0) ^ (b < 0)) != 0 && (a < 0) != (c < 0)) {
/* integer overflow */
- return mrb_float_value((mrb_float)a - (mrb_float)b);
+ return mrb_float_value(mrb, (mrb_float)a - (mrb_float)b);
}
return mrb_fixnum_value(c);
}
- return mrb_float_value((mrb_float)a - mrb_to_flo(mrb, y));
+ return mrb_float_value(mrb, (mrb_float)a - mrb_to_flo(mrb, y));
}
/* 15.2.8.3.2 */
@@ -1347,7 +1347,7 @@ flo_plus(mrb_state *mrb, mrb_value self)
x = mrb_float(self);
mrb_get_args(mrb, "f", &y);
- return mrb_float_value(x + y);
+ return mrb_float_value(mrb, x + y);
}
/* ------------------------------------------------------------------------*/
void