On Tue, 02 Aug 2016 10:55:34 -0700, zef...@fysh.org wrote: > > 1180591620717411303424e0 == 1180591620717409992704e0 > True > > 1180591620717411303424e0 === 1180591620717409992704e0 > True > > Say what? These are distinct Num values, differing by 10 ulp. > These literals work fine in other contexts: > > > my $a = 1180591620717411303424e0 > 1.18059162071741e+21 > > my $b = 1180591620717409992704e0 > 1.18059162071741e+21 > > $a.Int > 1180591620717411303424 > > $b.Int > 1180591620717409992704 > > $a == $b > False > > $a === $b > False > > == and === give the right result when applied to $a and $b as here, or > when applied to declared constants ("constant \A = 118..."). They also > work fine when comparing a variable against a literal. They go wrong when > applied directly to two literal expressions. They also go wrong with some > more complex expressions that bring in both values as literals, such as if > both sides are multiplied by 1.0e0 or by a variable containing that value. > > -zefram
Thank you for the report. This is now fixed. Fix: https://github.com/MoarVM/MoarVM/commit/067c0594103a025 https://github.com/MoarVM/MoarVM/commit/8841c4241b4faa8 https://github.com/MoarVM/MoarVM/commit/af2eb8a7f7d4344 https://github.com/MoarVM/MoarVM/commit/4d3fc2818d0032b https://github.com/rakudo/rakudo/commit/8422d7b4e23678b https://github.com/rakudo/rakudo/commit/a2a2a745c4242d1 Test: https://github.com/perl6/roast/commit/52c60ce5c283dd5b8 https://github.com/perl6/roast/commit/bba5e9fdda431c9f4