Questions about IEEE754 floating point in D

Don nospam at nospam.com
Tue Feb 23 06:14:07 PST 2010


Don wrote:
> Trip Volpe wrote:
>> 1. Does D guarantee the closest approximation for decimal 
>> floating-point literals?
> 
> Not at present.
> 
>>
>> 2. Minimum exponent. In D, double.min_exp is equal to -1021. However, 
>> the Wikipedia article on IEEE754-2008 and appendix D in Sun's 
>> Numerical Computation Guide ("What Every Computer Scientist Should 
>> Know About Floating-Point Arithmetic", 
>> http://docs.sun.com/source/806-3568/ncg_goldberg.html) list Emin for 
>> the IEEE754 double format as -1022. Is this an error?
> [snip]
> 
> There are no errors anywhere. However, double.min_exp is defined in the 
> spec as "the minimum value such that 2^^min_exp-1 is representable as a 
> normalized value".
> This means that 2^^min_exp-1 == 2^^Emin. And indeed min_exp-1 == -1022 = 
> Emin.
> I have no idea why min_exp is defined in such a peculiar way. In 
> particular, I don't know why it's different from the definition of 
> min_10_exp. It seems bizarre and useless.

For C++, DBL_MIN_EXP = -1021.
http://www.qnx.com/developers/docs/6.4.1/dinkum_en/ecpp/float.html
And it is defined as the minimum integer such that 
FLT_RADIX^^(DBL_MIN_EXP - 1) is a normalized, finite representable value 
of type double.

I have a vague recollection that this bizarre definition is for 
compatibility with an ancient mistake in C. Some clown miscalculated it, 
and by the time people realized, they felt it was too late to fix it.



More information about the Digitalmars-d mailing list