Re: Zero does not equal Zero
- To: mathgroup at smc.vnet.net
- Subject: [mg31435] Re: Zero does not equal Zero
- From: Leszek Sczaniecki <lsczan at home.com>
- Date: Mon, 5 Nov 2001 03:48:18 -0500 (EST)
- References: <9rlt9k$o10$1@smc.vnet.net> <9s0h9c$n68$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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