From 80502b30fb1be179739c453176bfc419e46caedb Mon Sep 17 00:00:00 2001 From: Hoshiumi Arata Date: Tue, 23 Jul 2024 21:05:10 +0900 Subject: [PATCH] Optimize even?/odd? for big integers --- mrbgems/mruby-numeric-ext/src/numeric_ext.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c index a949bf179..180780eda 100644 --- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c +++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c @@ -232,8 +232,8 @@ int_even(mrb_state *mrb, mrb_value self) { #ifdef MRB_USE_BIGINT if (mrb_bigint_p(self)) { - mrb_value mod2 = mrb_bint_mod(mrb, self, mrb_fixnum_value(2)); - if (mrb_integer(mod2) == 0) return mrb_true_value(); + mrb_value and1 = mrb_bint_and(mrb, self, mrb_fixnum_value(1)); + if (mrb_integer(and1) == 0) return mrb_true_value(); return mrb_false_value(); } #endif