diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c
index b8a8bb3d7..445464438 100644
--- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c
+++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c
@@ -227,6 +227,12 @@ int_size(mrb_state *mrb, mrb_value self)
return mrb_fixnum_value((mrb_int)size);
}
+/*
+ * call-seq:
+ * int.even? -> true or false
+ *
+ * Returns +true+ if +int+ is an even number.
+ */
static mrb_value
int_even(mrb_state *mrb, mrb_value self)
{
@@ -240,6 +246,12 @@ int_even(mrb_state *mrb, mrb_value self)
return mrb_bool_value(mrb_integer(self) % 2 == 0);
}
+/*
+ * call-seq:
+ * int.odd? -> true or false
+ *
+ * Returns +true+ if +int+ is an odd number.
+ */
static mrb_value
int_odd(mrb_state *mrb, mrb_value self)
{
@@ -249,6 +261,14 @@ int_odd(mrb_state *mrb, mrb_value self)
}
#ifndef MRB_NO_FLOAT
+/*
+ * call-seq:
+ * num.remainder(numeric) -> real
+ *
+ * x.remainder(y) means x-y*(x/y).truncate.
+ *
+ * See Numeric#divmod.
+ */
static mrb_value
flo_remainder(mrb_state *mrb, mrb_value self)
{
@@ -262,6 +282,11 @@ flo_remainder(mrb_state *mrb, mrb_value self)
}
#endif
+/*
+ * Integer square root implementation using the Babylonian method.
+ * This is an efficient integer-only algorithm to find the largest
+ * integer `x` such that `x*x <= n`.
+ */
static mrb_int
isqrt(mrb_int n)
{
@@ -280,6 +305,19 @@ isqrt(mrb_int n)
return x;
}
+/*
+ * call-seq:
+ * Integer.sqrt(n) -> integer
+ *
+ * Returns the integer square root of the non-negative integer +n+,
+ * which is the largest integer `i` such that `i*i <= n`.
+ *
+ * Integer.sqrt(0) # => 0
+ * Integer.sqrt(1) # => 1
+ * Integer.sqrt(24) # => 4
+ * Integer.sqrt(25) # => 5
+ * Integer.sqrt(10**40) # => 10**20
+ */
static mrb_value
int_sqrt(mrb_state *mrb, mrb_value self)
{