complex.c: optimize zero check for Float

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mrkn 2019-01-09 07:05:37 +00:00
parent f7c0abeaea
commit fc9e0302ea
3 changed files with 7 additions and 2 deletions

View File

@ -232,7 +232,10 @@ f_negative_p(VALUE x)
inline static int
f_zero_p(VALUE x)
{
if (RB_INTEGER_TYPE_P(x)) {
if (RB_FLOAT_TYPE_P(x)) {
return FLOAT_ZERO_P(x);
}
else if (RB_INTEGER_TYPE_P(x)) {
return FIXNUM_ZERO_P(x);
}
else if (RB_TYPE_P(x, T_RATIONAL)) {

View File

@ -1617,6 +1617,8 @@ void Init_newline(void);
#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
#define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
#ifndef ROUND_DEFAULT
# define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
#endif

View File

@ -1086,7 +1086,7 @@ rb_float_mul(VALUE x, VALUE y)
static bool
flo_iszero(VALUE f)
{
return RFLOAT_VALUE(f) == 0.0;
return FLOAT_ZERO_P(f);
}
static double