diff --git a/rational.c b/rational.c index 212ad07faa3f4f..26324899e50ea2 100644 --- a/rational.c +++ b/rational.c @@ -488,7 +488,9 @@ nurat_canonicalize(VALUE *num, VALUE *den) static void nurat_reduce(VALUE *x, VALUE *y) { - VALUE gcd = f_gcd(*x, *y); + VALUE gcd; + if (*x == ONE || *y == ONE) return; + gcd = f_gcd(*x, *y); *x = f_idiv(*x, gcd); *y = f_idiv(*y, gcd); }