Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2001
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2001

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

Search the Archive

Zero does not equal Zero

  • To: mathgroup at smc.vnet.net
  • Subject: [mg31360] Zero does not equal Zero
  • From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
  • Date: Tue, 30 Oct 2001 04:35:44 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Hello Group,

It seems people didn't fully grasp the inconsistency that I pointed to in my
earlier message with the same subject.  I came across this problem when I
tried to make my RootSearch package (recent MathSource addition) capable of
finding roots to a an arbitrary precision.  To allow that I had to make a
function similar to Ulp[x] in the NumericalMath`Microscope` package.  Among
other things my version of Ulp can work with arbitrary precision numbers.
Unfortunately I can't make RootSearch work as well as I would like because
of the problem I demonstrate below. 

First consider the next line which demonstrates that a StandardForm output
such as (0.  x 10^-20) represents an arbitrary precision number that is more
or less zero.

In[1]:=
   x=Exp[ N[Pi/3, 20] ];
   x-x

Out[1]=
   0. x 10^-20


Now suppose we want to find the arbitrary precision number that is slightly
larger than x, but as close as possible to x and still a different number.
What do I mean when I say "a different number"?  Well if x and y are
different numbers their difference should not be zero.  In the first case
below I view x and y as essentially the same number.

In[2]:=
   y=x+SetPrecision[5.96*^-20, 30];
   {y-x, y-x==0}

Out[4]=
   {0. x 10^-20, True}


What about the next case.  Here the StandardForm of (x-y) looks like zero,
but (x-y==0) returns False.  Are x and y "different numbers"?  Why does
(x-y) return False in the next line, but True in the slightly different case
above?  I think when comparing numeric values (x-y==0) should return True
IF AND ONLY IF  the StandardForm of (x-y) is zero.  When I say "is zero",
that includes (0. x 10^-20) and similar output.


In[5]:=
   y=x+SetPrecision[5.97*^-20, 30];
   {y-x, y-x==0}

Out[6]
   {0. x 10^-20, False}


--------
Regards,
  Ted Ersek



  • Prev by Date: Re: polynomials over finite fields
  • Next by Date: Balls
  • Previous by thread: Re: Re: Zero does not Equal Zero
  • Next by thread: Re: Zero does not equal Zero