Re: Mathematica 8: first impressions
- To: mathgroup at smc.vnet.net
- Subject: [mg114017] Re: Mathematica 8: first impressions
- From: Joseph Gwinn <joegwinn at comcast.net>
- Date: Sat, 20 Nov 2010 18:25:36 -0500 (EST)
- References: <ic34r0$5rv$1@smc.vnet.net> <ic8ag0$83s$1@smc.vnet.net>
In article <ic8ag0$83s$1 at smc.vnet.net>, blamm64 <blamm64 at charter.net> wrote: > First Impressions: .... > > 2) 64-bit has been around long enough to be pretty well received: In > Mathematica 8.0 $MachinePrecision is still 15.9.... on my Intel, > Windows XP x64 machine (2x 4-core Intel Xeon X5570, nVidia Quadro FX > 4800, 24 GB RAM) . Yeah, sure, Wolfram a good while back implemented > Mathematica to use 64 bit addressable memory (which really helps since > it's such a RAM hog), but still not to have implemented using 64-bit > available 'precision' is very disappointing ... . Yeah, Mathematica > uses double precision 32 bit to get 15.9... machine "precision", but > by now I think Mathematica, if installed on a 64-bit system, should > have $MachinePrecision of 31.8.... , or something close to that on a > 64-bit system. Umm, 15.9 decimal digits *is* double precision floating point, which is what is meant by a machine real. An IEEE single (32-bit) float has a 24-bit mantissa (including the hidden bit), so its machine precision is Log[10,2^24]= 7.22 decimal digits. An IEEE double (64-bit) float (called a double in C/C++) has a 53-bit mantissa (including the hidden bit), so its Log[10,2^53]= 15.95 decimal digits. To achieve 31.8 decimal digits would require use of IEEE quad (128-bit) floats, for 34 decimal digits. The only computer I know of that offered 128-bit floating-point arithmetic in hardware was the DEC VAX series, at least the larger members. A recent application where this kind of precision was truly needed was doing the ray-tracing of the laser beams in LIGO (Laser Interferometer Gravitational Wave Observatory), where the interferometer beams are kilometers long. To get 1/100 wavelength resolution using 1064 nanometer light over 20 Km total path requires precision of at least 10.64nm/20km= Log[10,5.32*10-13]= 12.3 digits. They did use VAXen for this, at least in the early days. More recent articles show them using Optica (which is a Mathematica package <http://www.opticasoftware.com/>), possibly in Mathematica's multiprecision mode. While integers can achieve higher precisions for a given size (because no space is spent on exponents), integers are pretty awkward to use unless one knows in advance what the allowed range of values is. For the record, Log[10,2^32]= 9.63 digits and Log[10,2^64]= 19.27 digits. Joe Gwinn Ref: <http://en.wikipedia.org/wiki/IEEE_754-2008>