Re: Why does Mathematica change the precision of an expression to check equality?
- To: mathgroup at smc.vnet.net
- Subject: [mg69529] Re: Why does Mathematica change the precision of an expression to check equality?
- From: "Nasser Abbasi" <nma at 12000.org>
- Date: Thu, 14 Sep 2006 06:57:26 -0400 (EDT)
- References: <ee0spn$b3f$1@smc.vnet.net>
- Reply-to: "Nasser Abbasi" <nma at 12000.org>
"Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com> wrote in message news:ee0spn$b3f$1 at smc.vnet.net... > 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. > http://support.wolfram.com/mathematica/kernel/features/simplifynumerical.html Nasser