Re: Mathematica 8: first impressions

*To*: mathgroup at smc.vnet.net*Subject*: [mg114158] Re: Mathematica 8: first impressions*From*: David Bailey <dave at removedbailey.co.uk>*Date*: Thu, 25 Nov 2010 05:59:52 -0500 (EST)*References*: <icg6nd$94b$1@smc.vnet.net>

On 23/11/10 10:57, Daniel Lichtblau wrote: > blamm64 wrote: >> On Nov 20, 6:25 pm, Joseph Gwinn<joegw... at comcast.net> wrote: >>> In article<ic8ag0$83... at smc.vnet.net>, blamm64<blam... 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. >>> [...] >>> Joe Gwinn >>> >>> Ref:<http://en.wikipedia.org/wiki/IEEE_754-2008> >> >> Umm, 15.9 digits is double precision (64 bit) in *32* bit. Umm, >> double precision in *64* (128 bit) bit is quad precision in 32 bit. > > That's not really the case. You might be thinking that integer and real > sizes are equated, but they are not. The IEEE standard makes clear that > binary32 is single precision, binary64 double, binary128 quad. Caverat: > standards change, and I do not claim to have seen the most recent one. > > Daniel Lichtblau > Wolfram Research > > > Indeed, Mathematica seems to have followed the lead of most other languages - e.g. Java - where the potential address space has become astronomical, but the sizes of integers and reals have remained the same. Some years back, this seemed strange to me, but I realised it really makes sense - because default 64-bit integers simply waste too much space, and are hardly ever necessary. It has also made the transition between 32/64 bit software incredibly easy. This makes particular sense on the IA64 architecture (as opposed to Itanium) because there is no speed penalty for manipulating 32-bit integers. In Mathematica, where integers change between hardware and software implementations, this difference will be almost invisible. I would guess that a fair proportion of applications that spill into 64-bit integers, will also spill into even larger sizes. David Bailey http://www.dbaileyconsultancy.co.uk