Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: Comparing results of math operations

by LanX (Canon)
on Apr 16, 2014 at 13:42 UTC ( #1082508=note: print w/ replies, xml ) Need Help??


in reply to Re: Comparing results of math operations
in thread Comparing results of math operations

I agree that the transformation from decimal to binary fractions is the biggest source of problems.

But does switching to decimal floats solve all problems?

1/3 can't be represented loss-free in neither decimal nor binary floats (3 is not a primefactor of 10 or 2)

So (1/3 * 3) can be different to 1.

Though it isn't ATM

DB<125> 1/3 *3 <=> 1 => 0

I'm not sure if that's always the case for similar calculations.

I remember similar discussions talking about something like "symbolic calculations", where divisor and denominator are kept separate till the end.

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re^2: Comparing results of math operations
Download Code
Re^3: Comparing results of math operations
by choroba (Abbot) on Apr 16, 2014 at 13:44 UTC
    discussions talking about something like "symbolic calculations", where divisor and denominator are kept separate till the end
    Do you mean Math::Fraction?
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      Nope, IIRC someone (Moritz?) mentioned Perl6 will/would try to do this automatically...

      But didn't want to generate a new "sixuality" dispute ... ;-)

      Cheers Rolf

      ( addicted to the Perl Programming Language)

Re^3: Comparing results of math operations
by syphilis (Canon) on Apr 16, 2014 at 14:14 UTC
    But does switching to decimal floats solve all problems?

    No ... but then rational arithmetic (where you keep divisor and numerator separate) also fails to solve all problems, as it falls down when you start to deal with irrational numbers such as sqrt(2) or transcendentals such as pi.

    I think what drew me to decimal arithmetic was that the values that appeared in the OP's post were all *exactly* representable in base 10, as were the results of the calculations he presented.
    If there had been a "1 / 3" (or some other rational value that couldn't be exactly represented in base 10) in that post then I would more likely have been drawn to modules such as Math::BigRat or Math::GMPq.

    Cheers,
    Rob

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1082508]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (8)
As of 2014-12-22 05:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (110 votes), past polls