Keep It Simple, Stupid PerlMonks

### Re^2: Comparing results of math operations

by LanX (Bishop)
 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)

Replies are listed 'Best First'.
Re^3: Comparing results of math operations
by syphilis (Chancellor) 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
Re^3: Comparing results of math operations
by choroba (Bishop) 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)

Create A New User
Node Status?
node history
Node Type: note [id://1082508]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2018-04-23 12:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (84 votes). Check out past polls.

Notices?