diff options
Diffstat (limited to 'src/numeric.c')
| -rw-r--r-- | src/numeric.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/src/numeric.c b/src/numeric.c index e4fea8455..f8d646594 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -118,23 +118,12 @@ mrb_num_div_int(mrb_state *mrb, mrb_int x, mrb_int y) int_overflow(mrb, "division"); } else { - mrb_int div, mod; + mrb_int div = x / y; - if (y < 0) { - if (x < 0) - div = -x / -y; - else - div = - (x / -y); - } - else { - if (x < 0) - div = - (-x / y); - else - div = x / y; - } - mod = x - div * y; - if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) { - div -= 1; + if (div < 0) { + if (x != div * y) { + div -= 1; + } } return div; } |
