Re: Input accuracy

• To: mathgroup at yoda.ncsa.uiuc.edu
• Subject: Re: Input accuracy
• From: jacobson at cello.hpl.hp.com
• Date: Fri, 09 Nov 90 09:10:49 PST

```Keith Slavin, writes:

> I have recently been trying to get mathematica to accept an input of GIVEN
> accuracy, ie: Foo[1.3,25] implies 1.300000000000000000000000, ie: 25 digit
> precision according to the Precision[] function, otherwise the
> OUTPUT accuracy suffers due to the 'machine accuracy' assumed for
> '1.3'.
> ...
> Any ideas?

Yes, this does it.  (I've called it PNum instead of Foo.)
The first definition accepts a string input, so you would write:
PNum["1.3",25].  For easier input when rationalize would work, I added
the second definition, which takes a number and calls Rationalize.
The third is just there so it works on integers as well.

PNum[st_String, n_] := \
SetPrecision[ToExpression[StringJoin[st,
Apply[StringJoin, Table["0", {Max[n, Precision[1.] + 5]}]]]], n]

PNum[x_Real, n_] := \
SetPrecision[N[Rationalize[x], Max[n, Precision[1.] + 5]], n]

PNum[x_Integer, n_] := SetPrecision[N[x, Max[n, Precision[1.] + 5]], n]

Big floats are extremely dangerous in Mathematica.  Caveat Emptor!
(There are many iterative calculations that ratchet down the precision
by 1 each iteration, and Mathematica uses the precision to determine
the number of bits in the representation.  So when you are done you
have a totally meaningless result.  Mathematica also has some bugs
that let the precision get too big, so don't trust what you get.  If
you can live with their accuracy/precision, machine numbers are much
safer.)

-- David Jacobson

```

• Prev by Date: Problems converting clipboard to Illustrator format
• Next by Date: 2D NIntegrate
• Previous by thread: Input accuracy
• Next by thread: Integrate ???