develooper Front page | perl.perl6.compiler | Postings from April 2018

Thread Next
From:
Zoffix Znet via RT
Date:
April 13, 2018 08:49
Subject:

Message ID:
rt-4.0.24-14051-1523609339-1777.132329-80-0@perl.org
On Fri, 20 Oct 2017 07:34:04 -0700, victor.adam@derpymail.org wrote:
> How to reproduce
> ----------------
> 
> perl6 -e 'my ($a, $b) = (0.777777777777777777777,
> 0.7777777777777777777771); say $a <=> $b, " ", Num($a) <=> Num($b)'
> 
> Expected behavior
> -----------------
> 
> Prints `Less Less`, or `Less Same`, depending on how rounding is done.
> 
> Actual behavior
> ---------------
> 
> Prints `Less More`. This seems inconsistent: $a is strictly smaller
> than $b, yet Num($a) is strictly larger than Num($b).
> 
> Version information
> -------------------
> 
> This is Rakudo version 2017.09 built on MoarVM version 2017.09.1
> implementing Perl 6.c.
> 
> This may be related to https://rt.perl.org/Public/Bug/Display.html?id=132313


Thank you for the report. This is now fixed (specifically, the Num version now gives "Same" as
there's not enough precision available to represent those Rats as different numbers)

Fix:  https://github.com/rakudo/rakudo/commit/a760ac3cfc6426d9bd2fb00db
      https://github.com/MoarVM/MoarVM/commit/b735866ddee9bd719440e5c82
Test: https://github.com/perl6/roast/commit/db0c58b5f763b085e


On Fri, 20 Oct 2017 17:44:40 -0700, cpan@zoffix.com wrote:
> This appears to be not a bug but simply the goodness of floating point
> math. I get the same result in C:

You're wrong, 2017-Zoffix. The result you got in C is because you incorrectly used doubles to do the division.


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About