MathGroup Archive 1990

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

Search the Archive

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 ???