diff --git a/src/core/Num.pm b/src/core/Num.pm index 14ef28204f9..fdd7a824761 100644 --- a/src/core/Num.pm +++ b/src/core/Num.pm @@ -36,9 +36,8 @@ my class Num does Real { # declared in BOOTSTRAP } method Rat(Num:D: Real $epsilon = 1.0e-6, :$fat) { - if nqp::isnanorinf(nqp::unbox_n(self)) { - return self; - } + return self == Inf ?? 1/0 !! self == -Inf ?? -1/0 !! 0/0 + if nqp::isnanorinf(nqp::unbox_n(self)); my Num $num = self; $num = -$num if (my int $signum = $num < 0); diff --git a/src/core/Rational.pm b/src/core/Rational.pm index 2a8d717d01e..b3704110d93 100644 --- a/src/core/Rational.pm +++ b/src/core/Rational.pm @@ -32,7 +32,7 @@ my role Rational[::NuT, ::DeT] does Real { method nude() { self.REDUCE-ME; $!numerator, $!denominator } method Num() { $!denominator == 0 - ?? ($!numerator < 0 ?? -Inf !! Inf) + ?? ($!numerator == 0 ?? NaN !! $!numerator < 0 ?? -Inf !! Inf) !! nqp::p6box_n(nqp::div_In( nqp::decont($!numerator), nqp::decont($!denominator)