MathGroup Archive 1990

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

Search the Archive

N[ ]

  • To: mathgroup at
  • Subject: N[ ]
  • From: uunet!!keiper%wri (Jerry Keiper)
  • Date: Fri, 23 Mar 90 17:33:09 CST

I stand by my statement that N[ ] never raises the precision of a number.
But perhaps I need to clarify what I mean by that.  There are two kinds of
numbers in Mathematica: machine numbers and bignums.  If a x is a machine
number Precision[x] will always return whatever the precision of a double
is; on a Sun that happens to be 16.  Mathematica never keeps track of the
precision of any machine number so Precision[x] tells you very little if
x is a machine number; you won't even be able to verify that it is a machine
number rather than a bignum with a certain precision.  Furthermore, if
the second argument to N[ ] is less than or equal to the precision of a
machine number it produces a machine number and displays it with the
number of digits requested (terminating zeros are suppressed).

This leads us to the second question: How does it know how many digits to
display in the case of a machine number?  Most of the time it doesn't so
it just shows 6 as a default.  However if the number was either entered
from the keyboard or resulted from N[ ] with a second argument less than
or equal to the precision of a machine number then the number of digits to
be displayed (NOT the precision) is stored in an int field in the number.
As soon as you do anything other than add 0 or multiply by 1, since it is
a machine number and Mathematica doesn't bother to keep track of its
precision, the number of digits to be displayed is lost and it will display
with the 6 digit default.  In my opinion this convention is pretty much
useless and it certainly leads to a great deal of confusion.

Jerry B. Keiper
Wolfram Research Inc.
keiper at

  • Prev by Date: evaluation
  • Next by Date: precision and accuracy
  • Previous by thread: evaluation
  • Next by thread: precision and accuracy