MathGroup Archive 2011

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

Search the Archive

Output Precision Exploration

  • To: mathgroup at smc.vnet.net
  • Subject: [mg118414] Output Precision Exploration
  • From: Rafael Dunn <worthless.trash.junk at gmail.com>
  • Date: Wed, 27 Apr 2011 05:39:14 -0400 (EDT)

Mathematica 8.0.1.0, Mac OSX x86

In:=
Log[173.5/173.5]

Out:=
-1.11022*10^-16

I expect an output of exactly 0.  Although 10^-16 is small, it turned 
out to be the largest factor in a chemical equation I was attempting to 
compute. 

I discovered this is because Mathematica does not actually evaluate 
173.5/173.5 = 1.  The output is actually some number 0.9999999999...

However, for most decimal constants x/x produces an exact output of 1.  
By entering a few decimals off the top of my head I also found 1733.5,  
26.44, and 27.44 do not produce an output of 1 when divided by 
themselves. 

Why?  I understand Mathematica's algorithms for working with decimals 
must make approximations, but why is there so much variance among 
decimal calculations?  173.49/173.49 = 1, while 173.5/173.5 != 1.  
Furthermore, I find:
x=173.49999999999999
x/x = 173.5/173.5, with infinite precision.  If you add or remove a 
single 9 to the end of x, this ceases to be true. 

Furthermore, this looks like a contradiction to me:

In:=
173.5/173.5 = 1
Log[1] = 0
Log[173.5/173.5] = 0

Out:=
True
True
False

I have learned a lot about Mathematica's precision and approximation through the help documentation, but I still can not explain this or see how I can expect Log[x/x] = 0 for the sake of calculations on the 10^-16 scale. 


  • Prev by Date: How to Assign Different Kernel To Different Notebook?
  • Next by Date: Re: Mathematica loop question
  • Previous by thread: Re: How to Assign Different Kernel To Different Notebook?
  • Next by thread: Re: Output Precision Exploration