From 1e30a7e001ea953e559b2a98d670d6d0dc6f513a Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 9 Mar 2018 02:06:39 +0000 Subject: complex.c: removed redundant conditions Fixnums can be compared by object values themselves only. Addition/subtraction/mulplication of fixnum 0 do not affect the sign. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- complex.c | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) (limited to 'complex.c') diff --git a/complex.c b/complex.c index 4f6a5fa243..b7a8963743 100644 --- a/complex.c +++ b/complex.c @@ -70,12 +70,10 @@ f_##n(VALUE x, VALUE y)\ inline static VALUE f_add(VALUE x, VALUE y) { -#ifndef PRESERVE_SIGNEDZERO - if (FIXNUM_P(y) && FIXNUM_ZERO_P(y)) + if (FIXNUM_ZERO_P(y)) return x; - else if (FIXNUM_P(x) && FIXNUM_ZERO_P(x)) + if (FIXNUM_ZERO_P(x)) return y; -#endif return rb_funcall(x, '+', 1, y); } @@ -107,36 +105,20 @@ f_gt_p(VALUE x, VALUE y) inline static VALUE f_mul(VALUE x, VALUE y) { -#ifndef PRESERVE_SIGNEDZERO - if (FIXNUM_P(y)) { - long iy = FIX2LONG(y); - if (iy == 0) { - if (RB_INTEGER_TYPE_P(x)) - return ZERO; - } - else if (iy == 1) - return x; - } - else if (FIXNUM_P(x)) { - long ix = FIX2LONG(x); - if (ix == 0) { - if (RB_INTEGER_TYPE_P(y)) - return ZERO; - } - else if (ix == 1) - return y; - } -#endif + if (FIXNUM_ZERO_P(y) && RB_INTEGER_TYPE_P(x)) + return ZERO; + if (FIXNUM_ZERO_P(x) && RB_INTEGER_TYPE_P(y)) + return ZERO; + if (y == ONE) return x; + if (x == ONE) return y; return rb_funcall(x, '*', 1, y); } inline static VALUE f_sub(VALUE x, VALUE y) { -#ifndef PRESERVE_SIGNEDZERO - if (FIXNUM_P(y) && FIXNUM_ZERO_P(y)) + if (FIXNUM_ZERO_P(y)) return x; -#endif return rb_funcall(x, '-', 1, y); } -- cgit v1.2.3