       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 - 2)*(Sqrt + 2);
y == 1

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

--> (-2 + Sqrt)*(2 + Sqrt) == 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?