From 19006b711d8649b69d6f9dafad073a2f57201dd7 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 2 Aug 2019 11:28:24 +0900 Subject: [PATCH] Expanded f_quo --- rational.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rational.c b/rational.c index 1dc08a082d..fdaf4d601b 100644 --- a/rational.c +++ b/rational.c @@ -1602,7 +1602,16 @@ f_ceil(VALUE x) } #define id_quo rb_intern("quo") -#define f_quo(x,y) rb_funcall((x), id_quo, 1, (y)) +static VALUE +f_quo(VALUE x, VALUE y) +{ + if (RB_INTEGER_TYPE_P(x)) + return rb_int_div(x, y); + if (RB_FLOAT_TYPE_P(x)) + return DBL2NUM(RFLOAT_VALUE(x) / RFLOAT_VALUE(y)); + + return rb_funcallv(x, id_quo, 1, &y); +} #define f_reciprocal(x) f_quo(ONE, (x))