From f9a0492b76956b545c746ab0d3ec0e555e77dfcd Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 2 Aug 2019 11:25:41 +0900 Subject: Expanded f_ceil --- rational.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'rational.c') diff --git a/rational.c b/rational.c index 3737db4cf2..1dc08a082d 100644 --- a/rational.c +++ b/rational.c @@ -43,13 +43,6 @@ static ID id_abs, id_idiv, id_integer_p, static VALUE nurat_to_f(VALUE self); -#define fun1(n) \ -inline static VALUE \ -f_##n(VALUE x)\ -{\ - return rb_funcall(x, id_##n, 0);\ -} - inline static VALUE f_add(VALUE x, VALUE y) { @@ -1597,7 +1590,16 @@ nurat_to_r(VALUE self) } #define id_ceil rb_intern("ceil") -#define f_ceil(x) rb_funcall((x), id_ceil, 0) +static VALUE +f_ceil(VALUE x) +{ + if (RB_INTEGER_TYPE_P(x)) + return x; + if (RB_FLOAT_TYPE_P(x)) + return rb_float_ceil(x, 0); + + return rb_funcall(x, id_ceil, 0); +} #define id_quo rb_intern("quo") #define f_quo(x,y) rb_funcall((x), id_quo, 1, (y)) -- cgit v1.2.3