Re: //N bug, but WHY?

• To: mathgroup at smc.vnet.net
• Subject: [mg58659] Re: //N bug, but WHY?
• From: dh <dh at metrohm.ch>
• Date: Tue, 12 Jul 2005 05:21:42 -0400 (EDT)
• References: <data3n\$mec\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,
your expression consists of a sum with 2 terms that have opposite signs
and nearly the same magnitude. The absolute value is of the order of
10^41 and the difference 10^-41. Therefore, if you calculate with
machine precision= 16 digits, this is doomed to fail.

On the other hand, the help for N[] is partly wrong.
Consider the help:
"N[expr] is equivalent to N[expr, MachinePrecision]"
a=10^16+1; b=10^16;
N[a-b] gives 1. because the argument of N is evaluated with infinite
precision before N sees it. We can prevent this by wrapping a and b in a
function that can not be evaluated with infinite precision:
a=Sqrt[10^16+1]; b=Sqrt[10^16];
N[a-b] gives 0. because 10^16+1 is now evaluated with machine precision
giving 10^16.
On the other hand,
N[a-b,16] gives 5.00.. 10^-9, here it seems that the intermediate
calulations are done with higher precision, exactly what the help says. Even
N[a-b,1] gives 5. 10^-9

In short:
N[expr] does all calculation in machine precision, whereas
N[expr,number] does all intermediate calculation with high enough (up to
an upper Limit of "\$MaxExtraPrecision") precision to garantee a result
precision of "number"

sincerely, Daniel

symbio wrote:
> Evaluating (using //N) two exact same expressions, gives wrong answer unless
> fullsimplify is used first, I spent 2 days on a problem thinking my answer
> was wrong, but turned out Mathematica 5 was giving me buggy answers, I
> debugged it to this point, but WHY in the world is this happening?  Please
> help!!!
>
> cut and paste below to see the test case:
>
> In[243]:=
> \!\(\(Cosh[\(43\ \[Pi]\)\/\@2] + \((1 - Cosh[43\ \@2\ \[Pi]])\)\ Csch[
>             43\ \@2\ \[Pi]]\ Sinh[\(43\ \[Pi]\)\/\@2] // FullSimplify\) //
>     N\[IndentingNewLine]
>   Cosh[\(43\ \[Pi]\)\/\@2] + \((1 - Cosh[43\ \@2\ \[Pi]])\)\ Csch[
>           43\ \@2\ \[Pi]]\ Sinh[\(43\ \[Pi]\)\/\@2] // N\)
> Out[243]=
> \!\(6.551787517854307`*^-42\)
> Out[244]=
> \!\(\(-1.9342813113834067`*^25\)\)
>
>
>
> thanks,
>

```

• Prev by Date: Fw: Re: Set of strings reducing problem
• Next by Date: Fw: Re: Set of strings reducing problem
• Previous by thread: Re: //N bug, but WHY?
• Next by thread: Re: //N bug, but WHY?