diff --git a/src/numeric.c b/src/numeric.c
index 50510fba7..30aa68d7c 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -140,11 +140,10 @@ mrb_div_int_value(mrb_state *mrb, mrb_int x, mrb_int y)
return mrb_int_value(mrb, mrb_div_int(x, y));
}
-/* 15.2.8.3.4 */
-/* 15.2.9.3.4 */
+/* 15.2.8.3.6 */
/*
* call-seq:
- * int / other -> num
+ * int / num -> num
*
* Performs division: the class of the resulting object depends on
* the class of num and on the magnitude of the
@@ -159,7 +158,7 @@ int_div(mrb_state *mrb, mrb_value x)
return mrb_bint_div(mrb, x, y);
}
#endif
- mrb_int a = mrb_integer(x);
+ mrb_int a = mrb_integer(x);
if (mrb_integer_p(y)) {
return mrb_div_int_value(mrb, a, mrb_integer(y));
@@ -314,6 +313,13 @@ mrb_div_float(mrb_float x, mrb_float y)
}
}
+/* 15.2.9.3.6 */
+/*
+ * call-seq:
+ * float / num -> float
+ *
+ * Returns a new Float which is the result of dividing float by num.
+ */
static mrb_value
flo_div(mrb_state *mrb, mrb_value x)
{
@@ -396,7 +402,7 @@ flo_to_s(mrb_state *mrb, mrb_value flt)
return str;
}
-/* 15.2.9.3.1 */
+/* 15.2.9.3.3 */
/*
* call-seq:
* float + other -> float
@@ -422,7 +428,7 @@ flo_add(mrb_state *mrb, mrb_value x)
}
}
-/* 15.2.9.3.2 */
+/* 15.2.9.3.4 */
/*
* call-seq:
* float - other -> float
@@ -449,7 +455,7 @@ flo_sub(mrb_state *mrb, mrb_value x)
}
}
-/* 15.2.9.3.3 */
+/* 15.2.9.3.5 */
/*
* call-seq:
* float * other -> float
@@ -513,7 +519,7 @@ flodivmod(mrb_state *mrb, double x, double y, mrb_float *divp, mrb_float *modp)
if (divp) *divp = div;
}
-/* 15.2.9.3.5 */
+/* 15.2.9.3.5 */
/*
* call-seq:
* flt % other -> float
@@ -572,7 +578,7 @@ num_eql(mrb_state *mrb, mrb_value x)
}
#ifndef MRB_NO_FLOAT
-/* 15.2.9.3.7 */
+/* 15.2.9.3.7 */
/*
* call-seq:
* flt == obj -> true or false
@@ -779,7 +785,7 @@ flo_infinite_p(mrb_state *mrb, mrb_value num)
return mrb_nil_value();
}
-/* 15.2.9.3.9 */
+/* 15.2.9.3.9 */
/*
* call-seq:
* flt.finite? -> true or false
@@ -912,7 +918,7 @@ flo_floor(mrb_state *mrb, mrb_value num)
return flo_rounding(mrb, num, floor);
}
-/* 15.2.9.3.8 */
+/* 15.2.9.3.8 */
/*
* call-seq:
* float.ceil([ndigits]) -> integer or float
@@ -1102,7 +1108,7 @@ flo_abs(mrb_state *mrb, mrb_value num)
*
*/
-
+/* 15.2.9.3.24 */
/*
* call-seq:
* int.to_i -> integer
@@ -1169,7 +1175,7 @@ mrb_int_mul(mrb_state *mrb, mrb_value x, mrb_value y)
}
}
-/* 15.2.8.3.3 */
+/* 15.2.8.3.5 */
/*
* call-seq:
* int * numeric -> numeric_result
@@ -1214,10 +1220,10 @@ intdivmod(mrb_state *mrb, mrb_int x, mrb_int y, mrb_int *divp, mrb_int *modp)
}
}
-/* 15.2.8.3.5 */
+/* 15.2.8.3.7 */
/*
* call-seq:
- * int % other -> real
+ * int % num -> num
*
* Returns int modulo other.
* See numeric.divmod for more information.
@@ -1313,7 +1319,7 @@ flo_divmod(mrb_state *mrb, mrb_value x)
}
#endif
-/* 15.2.8.3.7 */
+/* 15.2.8.3.2 */
/*
* call-seq:
* int == other -> true or false
@@ -1354,7 +1360,7 @@ int_equal(mrb_state *mrb, mrb_value x)
}
}
-/* 15.2.8.3.8 */
+/* 15.2.8.3.8 */
/*
* call-seq:
* ~int -> integer
@@ -1392,7 +1398,7 @@ static mrb_value flo_xor(mrb_state *mrb, mrb_value x);
} while(0)
#endif
-/* 15.2.8.3.9 */
+/* 15.2.8.3.9 */
/*
* call-seq:
* int & integer -> integer_result
@@ -1812,7 +1818,7 @@ mrb_int_add(mrb_state *mrb, mrb_value x, mrb_value y)
}
}
-/* 15.2.8.3.1 */
+/* 15.2.8.3.3 */
/*
* call-seq:
* int + numeric -> numeric_result
@@ -1876,11 +1882,10 @@ mrb_int_sub(mrb_state *mrb, mrb_value x, mrb_value y)
}
}
-/* 15.2.8.3.2 */
-/* 15.2.8.3.16 */
+/* 15.2.8.3.4 */
/*
* call-seq:
- * int - numeric -> numeric_result
+ * int - numeric -> numeric
*
* Performs subtraction: the class of the resulting object depends on
* the class of numeric and on the magnitude of the
@@ -2041,7 +2046,8 @@ int_hash(mrb_state *mrb, mrb_value self)
return mrb_int_value(mrb, mrb_byte_hash((uint8_t*)&n, sizeof(n)));
}
-/* 15.2.9.3.6 */
+/* 15.2.8.3.1 */
+/* 15.2.9.3.1 */
/*
* call-seq:
* self.f <=> other.f => -1, 0, +1, or nil
@@ -2197,8 +2203,8 @@ mrb_init_numeric(mrb_state *mrb)
mrb_define_method(mrb, integer, "-", int_sub, MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */
mrb_define_method(mrb, integer, "*", int_mul, MRB_ARGS_REQ(1)); /* 15.2.8.3.3 */
mrb_define_method(mrb, integer, "%", int_mod, MRB_ARGS_REQ(1)); /* 15.2.8.3.5 */
- mrb_define_method(mrb, integer, "/", int_div, MRB_ARGS_REQ(1)); /* 15.2.8.3.6 */
- mrb_define_method(mrb, integer, "quo", int_quo, MRB_ARGS_REQ(1)); /* 15.2.7.4.5 (x) */
+ mrb_define_method(mrb, integer, "/", int_div, MRB_ARGS_REQ(1)); /* 15.2.8.3.6 */
+ mrb_define_method(mrb, integer, "quo", int_quo, MRB_ARGS_REQ(1)); /* 15.2.7.4.5(x) */
mrb_define_method(mrb, integer, "div", int_idiv, MRB_ARGS_REQ(1));
mrb_define_method(mrb, integer, "==", int_equal, MRB_ARGS_REQ(1)); /* 15.2.8.3.7 */
mrb_define_method(mrb, integer, "~", int_rev, MRB_ARGS_NONE()); /* 15.2.8.3.8 */
@@ -2217,7 +2223,7 @@ mrb_init_numeric(mrb_state *mrb)
#endif
mrb_define_method(mrb, integer, "to_s", int_to_s, MRB_ARGS_OPT(1)); /* 15.2.8.3.25 */
mrb_define_method(mrb, integer, "inspect", int_to_s, MRB_ARGS_OPT(1));
- mrb_define_method(mrb, integer, "divmod", int_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */
+ mrb_define_method(mrb, integer, "divmod", int_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30(x) */
mrb_define_method(mrb, integer, "__coerce_step_counter", coerce_step_counter, MRB_ARGS_REQ(2));
/* Fixnum Class for compatibility */
@@ -2229,19 +2235,19 @@ mrb_init_numeric(mrb_state *mrb)
MRB_SET_INSTANCE_TT(fl, MRB_TT_FLOAT);
mrb_undef_class_method(mrb, fl, "new");
mrb_define_method(mrb, fl, "**", flo_pow, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, fl, "/", flo_div, MRB_ARGS_REQ(1)); /* 15.2.9.3.6 */
- mrb_define_method(mrb, fl, "quo", flo_div, MRB_ARGS_REQ(1)); /* 15.2.7.4.5 (x) */
+ mrb_define_method(mrb, fl, "/", flo_div, MRB_ARGS_REQ(1)); /* 15.2.9.3.6 */
+ mrb_define_method(mrb, fl, "quo", flo_div, MRB_ARGS_REQ(1)); /* 15.2.7.4.5(x) */
mrb_define_method(mrb, fl, "div", flo_idiv, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, fl, "+", flo_add, MRB_ARGS_REQ(1)); /* 15.2.9.3.3 */
- mrb_define_method(mrb, fl, "-", flo_sub, MRB_ARGS_REQ(1)); /* 15.2.9.3.4 */
- mrb_define_method(mrb, fl, "*", flo_mul, MRB_ARGS_REQ(1)); /* 15.2.9.3.5 */
- mrb_define_method(mrb, fl, "%", flo_mod, MRB_ARGS_REQ(1)); /* 15.2.9.3.7 */
- mrb_define_method(mrb, fl, "<=>", num_cmp, MRB_ARGS_REQ(1)); /* 15.2.9.3.1 */
+ mrb_define_method(mrb, fl, "+", flo_add, MRB_ARGS_REQ(1)); /* 15.2.9.3.3 */
+ mrb_define_method(mrb, fl, "-", flo_sub, MRB_ARGS_REQ(1)); /* 15.2.9.3.4 */
+ mrb_define_method(mrb, fl, "*", flo_mul, MRB_ARGS_REQ(1)); /* 15.2.9.3.5 */
+ mrb_define_method(mrb, fl, "%", flo_mod, MRB_ARGS_REQ(1)); /* 15.2.9.3.7 */
+ mrb_define_method(mrb, fl, "<=>", num_cmp, MRB_ARGS_REQ(1)); /* 15.2.9.3.1 */
mrb_define_method(mrb, fl, "<", num_lt, MRB_ARGS_REQ(1));
mrb_define_method(mrb, fl, "<=", num_le, MRB_ARGS_REQ(1));
mrb_define_method(mrb, fl, ">", num_gt, MRB_ARGS_REQ(1));
mrb_define_method(mrb, fl, ">=", num_ge, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, fl, "==", flo_eq, MRB_ARGS_REQ(1)); /* 15.2.9.3.2 */
+ mrb_define_method(mrb, fl, "==", flo_eq, MRB_ARGS_REQ(1)); /* 15.2.9.3.2 */
mrb_define_method(mrb, fl, "~", flo_rev, MRB_ARGS_NONE());
mrb_define_method(mrb, fl, "&", flo_and, MRB_ARGS_REQ(1));
mrb_define_method(mrb, fl, "|", flo_or, MRB_ARGS_REQ(1));