MathGroup Archive 2001

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

Search the Archive

Re: Zero does not equal Zero


Mark Sofroniou wrote:

> You can't use Equal or SameQ for you wants because they have a built in
> tolerance that is larger than the difference you are seeking.
>

Hi Mark,

Would you please elaborate on these build-in tolerances in the context of
the following example?

In[1]:=
?$MachineEpsilon

$MachineEpsilon gives the smallest machine-precision number
which can be added to 1.0 to give a result that is distinguishable from
1.0.

In[2]:=
a = 1.0;
b = 1.0 + $MachineEpsilon;
c = 1.0 + 2*$MachineEpsilon;
d = 1.0 + 64*$MachineEpsilon;

In[6]:=
{a === b, b === c , a === c, a === d}

Out[6]=
{True,True,False,False}

In[7]:=
{a == b, b == c , a == c, a == d}

Out[7]=
{True,True,True,True}

In[8]:=
Map[FullForm, {a, b, c, d}]

Out[8]=
{1.`,1.0000000000000002`,1.0000000000000004`,1.0000000000000142`}

In[9]:=
Map[Precision,{a, b, c, d}]

Out[9]=
{16,16,16,16}

In[10]:=
Map[Accuracy, {a, b, c, d}]

Out[10]=
{16,16,16,16}

The reason for this inquiry is that a naive user like myself would expect
these results.

Out[6]= {False,False,False,False}

Out[7]= {True,True,False,False}

Thank you,

Leszek Sczaniecki

PS
I am using Mathematica 4.1 for Microsoft Windows (November 2, 2000)

>
> [text deleted]
>
> Mark Sofroniou
> Wolfram Research


  • Prev by Date: Re: Clearing Subscripted Variables?
  • Next by Date: ListContourPlot Color
  • Previous by thread: Re: Zero does not equal Zero
  • Next by thread: Re: Zero does not equal Zero