summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-11-17 00:24:43 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-11-17 00:24:43 +0900
commit37a18847494fcf1ed380f644dc9c6533ec8d2738 (patch)
treece75a7c9a9b12b923802cb9d09c6765267586425 /src/numeric.c
parent3107d1caaee4faa3a295c503ce4cfe9fd488fea0 (diff)
downloadmruby-37a18847494fcf1ed380f644dc9c6533ec8d2738.tar.gz
mruby-37a18847494fcf1ed380f644dc9c6533ec8d2738.zip
Simplify `mrb_num_div_int()`.
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c21
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;
}