Don wrote:
Dmitry Olshansky wrote:
Well, to keep things short, double.min returns something weird.
See the following for demonstration:
import std.stdio;
void main(){
double r = double.max, r2 = double.min;
writeln(r);//1.79769e+308
r *= 2;//test if it's max
writeln(r); // infinity, ok
writeln(r2);//2.22507e-308, wtf ?
r2 /= 2.0;
writeln(r2);// 1.11254e-308, a logical consequence of above
double dmin = 5e-324;
writeln(dmin);// 4.94066e-324
dmin /= 2.0;
writefln(dmin);// 0
}
double.min is deprecated, for exactly this reason. That's why it's not
mentioned in the spec.
And futher -- double.min_normal is the smallest normalised double. The
smallest representable double is (double.min_normal * double.epsilon).
double.min is a silly name, so it has been deprecated.