summaryrefslogtreecommitdiff
path: root/complex.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-09 02:06:39 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-09 02:06:39 +0000
commit1e30a7e001ea953e559b2a98d670d6d0dc6f513a (patch)
tree15d11151d427221b37bb076bc57fdc40f8736953 /complex.c
parent38b240156c829fe4e13b8ee4a2bdd0d28c77b334 (diff)
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
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c36
1 files changed, 9 insertions, 27 deletions
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);
}