FloatingPoint in D

Don Clugston dac at nospam.com.au
Wed Mar 14 04:29:08 PDT 2007


BCS wrote:
>>> Can any D implementation be assumed to use IEEE-768? In other words:
>>> can I safely build floats and double from bits and expect it to work
>>> on an arbitrary compiler including ones that don't exits yet?
>>>
>>> I guess a corollary is, are there any platforms that D is likely to
>>> be used on that have a hardware FP system *other* than IEEE-768?

Not many non-IEEE 754 systems exist any more. The most notable exception 
is some Cray systems.

(actually, AMD's 3DNow! also isn't IEEE 754 compliant.).

> real will be a pain however it's cut because even in x86 where it is 
> 80bit IEEE-754 doesn't define an exact bit pattern.

Yes, but it specifies several aspects of it -- significand must be 
continuous, exponent must be continuous. There's not much room to move.
(a) IEEE 754R specifies the storage of 128-bit reals, and they are 
identical to x86 80-bit reals, except that the significand has some 
trailing zeros. (x86 80-bit reals are a poor-man's quadruple).
(b) AFAIK, the only systems with 80-bit reals are x86, Itanium, and 68K, 
and they are all identical.
So in practice, it's a de-facto standard, and 754R will goes a long way 
towards standardising it.

The only hardware implementations of 'real' are 64-bit double, 80-bit 
x86-compatible (with or without implicit bit), and 128-bit quadruple 
(which is binary defined on some Sparc systems, but not implemented on 
any hardware AFAIK).
Itanium also has an 81-bit real, but it's only used by the OS to provide 
  fast implementations of 80-bit hypot() and similar functions - I think 
it's technically not IEEE compliant.

In practice, the situation is not nearly as bad as it appears.

> So I'm thnking the result is: D floating point can be assumed to use 
> IEEE-754.

Yes.


More information about the Digitalmars-d-learn mailing list