diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-11-17 00:24:43 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-11-17 00:24:43 +0900 |
| commit | 37a18847494fcf1ed380f644dc9c6533ec8d2738 (patch) | |
| tree | ce75a7c9a9b12b923802cb9d09c6765267586425 | |
| parent | 3107d1caaee4faa3a295c503ce4cfe9fd488fea0 (diff) | |
| download | mruby-37a18847494fcf1ed380f644dc9c6533ec8d2738.tar.gz mruby-37a18847494fcf1ed380f644dc9c6533ec8d2738.zip | |
Simplify `mrb_num_div_int()`.
| -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; } |
