MathGroup Archive 2006

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

Search the Archive

comparing implicit 0 with machine floats

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71108] comparing implicit 0 with machine floats
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 8 Nov 2006 06:16:07 -0500 (EST)

Consider the following:


Sqrt[2] + Sqrt[3] - Sqrt[4 + 2*Sqrt[6]] == 2.

False

No problem here. Now let's make a small change

In[17]:=
Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 2.

Out[17]=

Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 2.

In fact the expression on the LHS  is exactly 0:

In[19]:=
RootReduce[Sqrt[2]+Sqrt[3]-Sqrt[5+2*Sqrt[6]]]

Out[19]=

The curious thing is that if you try a comparison between a zero of  
this kind and any machine float, however large, Mathematica 5.1 will  
return the original input:

In[20]:=
Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == N[10^3]

Out[20]=
Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 1000.

yet if the number of the left hand side is altered, however slightly,  
the comparison will be made:


Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6+1/10^20]] == 2.

False

This suggests that Mathematica actually did perform a computation of  
the left hand side in the examples where it just returned the input  
and having discovered that it could not determine if the LHS is an  
exact zero decided "not to answer the question". But this seems quite  
unreasonable; after all it is not being asked if the LHS is an exact  
0, or even an approximate 0, but if it is an approximate large number  
like 1000., and this it certainly can decide.

I believe this used to be handled differently (better?) in older  
versions of Mathematica but I no longer have any installed to check.

Andrzej Kozlowski



  
  


  • Prev by Date: Re: Evaluating integral with varying upper limit?
  • Next by Date: Re: building a list containing elements f(i,j)
  • Previous by thread: Re: Advanced nonlinear integro-differential equation
  • Next by thread: Re: comparing implicit 0 with machine floats