remainder(p1)
public
If num and numeric have different signs, returns
mod-numeric; otherwise, returns mod. In both cases
mod is the value num.modulo(numeric). The differences
between remainder and modulo (%) are shown in the table under
Numeric#divmod.
Show source
static VALUE
num_remainder(VALUE x, VALUE y)
{
VALUE z = rb_funcall(x, '%', 1, y);
if ((!rb_equal(z, INT2FIX(0))) &&
((RTEST(rb_funcall(x, '<', 1, INT2FIX(0))) &&
RTEST(rb_funcall(y, '>', 1, INT2FIX(0)))) ||
(RTEST(rb_funcall(x, '>', 1, INT2FIX(0))) &&
RTEST(rb_funcall(y, '<', 1, INT2FIX(0)))))) {
return rb_funcall(z, '-', 1, y);
}
return z;
}