Don wrote:
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.

Then it sounds like something D should get right.

-Lars

Reply via email to