I suppose my silliness is understandable, in light of all the confusion,
both here and in the Browser on what "significance arithmetic" is, what
"bignums" and "bigfloats" might be, etc.
If many smart people are confused, there's a possibility --- just a
possibility, mind you --- that it isn't entirely their fault. Yes? No?
>>like 71 above, or -5 for Accuracy in the example that fooled me), but
it's not a big deal
For people who don't understand it as well as you, yes, it's a big deal.
My purpose in all this is to understand the issue well enough to know
how to proceed. I think that I do, now, but I doubt everybody on the
list does.
Daniel says this will all be clearer in the next release, and that's
good!
Bobby
-----Original Message-----
From: Andrzej Kozlowski [mailto:andrzej at tuins.ac.jp]
To: mathgroup at smc.vnet.net
Subject: [mg37007] Re: [mg36989] RE: [mg36936] RE: Accuracy and Precision
On Friday, October 4, 2002, at 06:01 PM, DrBob wrote:
> Here's an even more extreme result:
>
> f = SetAccuracy[333.75*b^6 + a^2*(11*a^2*b^2 - b^6 -
> 121*b^4 - 2) + 5.5*b^8 + a/(2*b), 50];
> a = 77617.; b = 33096.;
> f
> Precision[f]
>
> -1.180591620717411303424`71.0721*^21
> 71
>
> 71.0721 digits of precision? I don't think so!!
Either I am it altogether or you are just simply beating to death the
point that in case of machine arithmetic (only!) Precision and
Accuracy are purely formal and essentially meaningless.
One can argue whether in this case there is any point of returning any
value for Precision, or Accuracy (like 71 above, or -5 for Accuracy in
the example that fooled me), but it's not a big deal and it most
certainly does not make SetPrecision meaningless. On the contrary,
SetPrecision is very useful and in fact it is SetPrecision that can
tell you that the answer above is meaningless:
In[8]:=
f = SetAccuracy[333.75*b^6 + a^2*(11*a^2*b^2 - b^6 -
121*b^4 - 2) + 5.5*b^8 + a/(2*b), 50];
a=SetPrecision[77617.,$MachinePrecision]; b = SetPrecision[
33096.,$MachinePrecision];
In[10]:=
{f,Precision[f]}
Out[10]=
{1.19801754103509`0*^19, 0}
I would say this is correct and show that SetPrecision is very useful
indeed. It tells you (what of course you ought to already know in this
case anyway) that machine precision will not give you a realiable
answer in this case. If you know your numbers with a great deal of
accuracy you can get an accurate answer:
In[24]:=
f = SetAccuracy[333.75*b^6 + a^2*(11*a^2*b^2 - b^6 -
121*b^4 - 2) + 5.5*b^8 + a/(2*b), 100];
a=SetPrecision[77617.,100]; b = SetPrecision[33096.,100];
In[26]:=
{f, Precision[f]}
Out[26]=
{-0.82739605994682136814116509547981629199903311578438481991\
781484167246798617832`61.2597, 61}
Again you can be pretty sure that you got an accurate answer, provided
of course your original setting of precision was valid.
Honestly, to say that SetPrecision and SetAccuaracy are useless is one
of the silliest thing I have read on this list in years.
>
Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/http://platon.c.u-tokyo.ac.jp/andrzej/