MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Why does Mathematica change the precision of an expression to check equality?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69386] Why does Mathematica change the precision of an expression to check equality?
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Sun, 10 Sep 2006 07:19:52 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK

These thoughts come after answering a similar question in a forum 
dedicated to anther CAS. Having ran the following code, I am a little 
perplexed by the behavior of Mathematica.

y = (Sqrt[5] - 2)*(Sqrt[5] + 2);
y == 1

--> N::"meprec" : "Internal precision limit $MaxExtraPrecision = 
(49.99999999999999) reached while evaluating -1 + (-2 + Sqrt[5])*(2 + 
Sqrt[5]). More...

--> (-2 + Sqrt[5])*(2 + Sqrt[5]) == 1

At least Mathematica returns a warning message in addition to the 
unevaluated expression

I used to thought that Mathematica was not attempting to do any 
algebraic simplifications when testing, say, equality, and that one have 
to request explicitly such transformations.

However, it is pretty clear that Mathematica transforms the expression 
in some way, in this case changing infinite precision -- that is exact 
numbers -- into arbitrary precision -- that is better precision that 
hardware but still not exact.

So the question is, "Why, when an expression is only written with exact 
numbers, Mathematica would "downgrade" the precision to a lower and 
inexact one before attempting to answer a boolean question?"

I do not see the rational behind this design choice...

Best regards,
Jean-Marc

P.S. I know that one can get the correct answer by using Simplify.


  • Prev by Date: Re: Boolean algebra
  • Next by Date: Re: Boolean algebra
  • Previous by thread: Re: translating code from True Basic to Mathematica
  • Next by thread: Re: Why does Mathematica change the precision of an expression to check equality?