Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is DBL_MIN the smallest positive double?

Q: Is DBL_MIN the smallest positive double?

The code below seems to anwser this question with no. But if this is true, how is DBL_MIN the defined and what is its use or purpose.

Platform: Windows7 & Visual Studio 2013

double next_to_zero = std::nextafter(0.0,DBL_MIN);
bool b =  DBL_MIN <= next_to_zero;
std::cout << std::boolalpha 
          << "is dbl_min the smallest representable double? "
          << b << '\n';

std::cout << std::setprecision(56)
          << "dbl_min = " << DBL_MIN << '\n'
          << "next to zero = " << next_to_zero;

outputs:

is dbl_min the smallest representable double? false

dbl_min = 2.2250738585072013830902327173324040642192159804623318306e-308

next to zero = 4.9406564584124654417656879286822137236505980261432476443e-324

like image 739
user1235183 Avatar asked Sep 28 '16 12:09

user1235183


People also ask

What is Dbl_min?

DBL_MIN is the smallest positive normal double . DBL_TRUE_MIN is the smallest positive double (since C++17). It will be smaller than DBL_MIN when double supports subnormals.

What is the smallest double in C++?

Limitations. DOUBLE value ranges: Smallest DOUBLE value: -1.79769E+308.


2 Answers

I'm restricting this answer, perhaps unnecessarily, to IEEE754 floating point.

DBL_MIN is not allowed to be a subnormal number.

But std::nextafter is allowed to return a subnormal number.

Hence the return value of the latter could be less than DBL_MIN.

For more details see https://en.wikipedia.org/wiki/Denormal_number

like image 66
Bathsheba Avatar answered Oct 17 '22 01:10

Bathsheba


Is DBL_MIN the smallest positive double?

Not certainly.
DBL_MIN is the smallest positive normal double.

DBL_TRUE_MIN is the smallest positive double (since C++17). It will be smaller than DBL_MIN when double supports subnormals.

like image 38
chux - Reinstate Monica Avatar answered Oct 17 '22 02:10

chux - Reinstate Monica