## Confused by (apparent) inconsistent precision

10

$$e^{\pi \sqrt{163}} \approx 262537412640768743.99999999999925$$

E^(Pi Sqrt[163.0])
N[E^(Pi Sqrt[163.0]), 35]
NumberForm[E^(Pi Sqrt[163.]), 35]


returns

2.6253741*10^17
2.6253741*10^17
2.625374126407682*10^17


That's not the 35 digits I expected. OTOH,

N[Pi* E, 35]


returns 35 digits,

8.5397342226735670654635508695465745


but then

NumberForm[Pi*E*1., 35]


again doesn't:

8.53973422267357


So I'm confused. Why doesn't one N[] what the other one does? In the documentation:

NumberForm[ expr, n ]
prints with approximate real numbers in expr given to n-digit precision.

I read this three times, slowly, went for a cup of tea, and read it again. But 15 isn't 35, or is it?

1It is, for sufficiently large values of... Okay, the issue, as stated in the response below, is that you cannot get more correct digits after the fact. To obtain 35 digits, use N[] on an exact input, not one that already contains approximate numbers of lower precision. – Daniel Lichtblau – 2012-09-14T14:31:29.940

@Daniel - Thanks for the feedback. Are you referring to my 163.0 instead of 163? To be honest, I don't know why I wrote it that way :-/ – stevenvh – 2012-09-14T14:35:15.060

1Yes, I meant 163.0 was, in effect, polluting the input with machine precision. – Daniel Lichtblau – 2012-09-14T14:36:02.707

13

N does not raise the precision of approximate numbers in its input

163.0 (or 163., or 163) is a machine precision number, and Mathematica will not fake a higher precision when a certain number of digits are requested with N.

See this answer and this tutorial for more.

These questions may also be of interest:

Converting to machine precision

Annoying display truncation of numerical results

@stevenvh In keeping with Mr.Wizard's advice, you may wish to compare using 163` (without the decimal point) in your code. – DavidC – 2012-09-14T13:58:51.957