From 94a3a3eb6e48e6fab5f3102bbcb976bd7bef74b7 Mon Sep 17 00:00:00 2001 From: Hoshiumi Arata Date: Wed, 11 Dec 2024 21:09:46 +0900 Subject: [PATCH] mruby-bigint: fix rounding behavior in mpz_mdiv and mpz_mdivmod functions --- mrbgems/mruby-bigint/core/bigint.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-bigint/core/bigint.c b/mrbgems/mruby-bigint/core/bigint.c index 77548f786..baa3beda9 100644 --- a/mrbgems/mruby-bigint/core/bigint.c +++ b/mrbgems/mruby-bigint/core/bigint.c @@ -590,7 +590,7 @@ mpz_mdiv(mrb_state *mrb, mpz_t *q, mpz_t *x, mpz_t *y) q->sn = 0; /* now if r != 0 and q < 0 we need to round q towards -inf */ if (!uzero_p(&r) && qsign < 0) - mpz_sub_int(mrb, q, 1); + mpz_add_int(mrb, q, 1); mpz_clear(mrb, &r); } @@ -655,7 +655,7 @@ mpz_mdivmod(mrb_state *mrb, mpz_t *q, mpz_t *r, mpz_t *x, mpz_t *y) q->sn = 0; /* now if r != 0 and q < 0 we need to round q towards -inf */ if (!uzero_p(r) && qsign < 0) - mpz_sub_int(mrb, q, 1); + mpz_add_int(mrb, q, 1); } static void