aboutsummaryrefslogtreecommitdiffstats
path: root/complex.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-02 17:12:17 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-02 17:43:10 +0900
commit137fde717bfa4d1a116bf1d56c288a1f3016126c (patch)
tree88bd3fd8880ddfa04c97b5edd8f4204066c6c0b7 /complex.c
parentd1d76f24288993b4f004770397a05c0be8ac13b4 (diff)
downloadruby-137fde717bfa4d1a116bf1d56c288a1f3016126c.tar.gz
Make internal predicate functions to return simple boolean
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/complex.c b/complex.c
index 3fbda125ff..647fff9d1d 100644
--- a/complex.c
+++ b/complex.c
@@ -338,29 +338,26 @@ VALUE rb_flo_is_finite_p(VALUE num);
inline static int
f_finite_p(VALUE x)
{
- if (RB_INTEGER_TYPE_P(x)) {
+ if (RB_INTEGER_TYPE_P(x) || RB_TYPE_P(x, T_RATIONAL)) {
return TRUE;
}
else if (RB_FLOAT_TYPE_P(x)) {
return (int)rb_flo_is_finite_p(x);
}
- else if (RB_TYPE_P(x, T_RATIONAL)) {
- return TRUE;
- }
return RTEST(rb_funcallv(x, id_finite_p, 0, 0));
}
VALUE rb_flo_is_infinite_p(VALUE num);
-inline static VALUE
+inline static int
f_infinite_p(VALUE x)
{
if (RB_INTEGER_TYPE_P(x) || RB_TYPE_P(x, T_RATIONAL)) {
- return Qnil;
+ return FALSE;
}
else if (RB_FLOAT_TYPE_P(x)) {
- return rb_flo_is_infinite_p(x);
+ return RTEST(rb_flo_is_infinite_p(x));
}
- return rb_funcallv(x, id_infinite_p, 0, 0);
+ return RTEST(rb_funcallv(x, id_infinite_p, 0, 0));
}
inline static int
@@ -1469,7 +1466,7 @@ rb_complex_infinite_p(VALUE self)
{
get_dat1(self);
- if (NIL_P(f_infinite_p(dat->real)) && NIL_P(f_infinite_p(dat->imag))) {
+ if (!f_infinite_p(dat->real) && !f_infinite_p(dat->imag)) {
return Qnil;
}
return ONE;