MathGroup Archive 2011

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

Search the Archive

Re: Numerical accuracy/precision - this is a bug or

Dear Group!

I do not agree to arguments based on SetPrecision, since the function
modifies the numbers (it adds binary 0 to fill the missing binary digits
as stated in the documentation) it does not show us what a and b are. It
no suprise for me that in base 10 the numbers a and b are now different
(and SameQ qill return False).

If we want to see the actual form of a and b I would rather use FullForm:

a = 1.100000000000000000000000000;
b = 1.1;


As we can see the first number is accurate up to the 27th digit while the
second is accurate up to machine precision. Well but they are still

First I was surprised that SameQ yields True but I guess that it has
something to do with Mathematica's principle to return results correct to
the lowest precision found in the expression.

So to my opinion Mathematica does the following: 1) first convert all
numbers to numbers of the lowest precision found in the expression, 2)
follow the usual evaluation chain. Am I correct? If so, SameQ yields True,
since up to machine precision both numbers are the same expression.

In another response to my post I learned that it is not a good idea to
overwrite the definition of Equal. As a conclusion I would implement the
following identity:



which also handles the issue with the comparison of different precision

In[62]:= a\[TildeEqual]a
Out[62]= True

In[64]:= a\[TildeEqual]b
Out[64]= False

Of course the definition can be modified to your needs...



On 15/07/2011 10:08, James Stein wrote:
> Richard, thanks for pointing this out.
> >From what you say, it seems that the documentation for SameQ is incorrect.
> On Thu, Jul 14, 2011 at 6:21 PM, Richard Fateman
> <fateman at>wrote:
>> On 7/14/2011 6:22 AM, Christoph Lhotka wrote:
>>> Dear group!
>> ....
>>> My question is: how dangerous is it to overwrite such a fundamental
>>> function as Equal?
>>> Best,
>>> Christoph
>> An excellent question.  Anyone who runs Mathematica in serious
>> applications could try it
>> and report back.
>> Unfortunately, SameQ doesn't operate the way I suspect you think it does.
>> Consider a = 1.100000000000000000000000000;   b=1.1
>> SameQ[a,b]  is True.
>> Yet a and b are different.  You can see this if you do
>> SetPrecision[a,100] and SetPrecision[b,100].
>> 1.10000000000000000000000000000000000000117549435082228750796873653722\
>> 2245677818665556772087521508752
>> 1.10000000000000008881784197001252323389053344726562500000000000000000\
>> 0000000000000000000000000000000
>> RJF

  • Prev by Date: Re: Numerical accuracy/precision - this is a bug or a feature?
  • Next by Date: Re: Interpolation problems
  • Previous by thread: Re: Keeping it real
  • Next by thread: Re: Numerical accuracy/precision - this is a bug or