In <random>(bits/random.h)'s std::normal_distribution, min() function's implementation is follow: /** * @brief Returns the greatest lower bound value of the distribution. */ result_type min() const { return std::numeric_limits<result_type>::min(); } It means return 0.0. But, distributuon class's min() member function returns potentially return value by operator(). I think should return numeric_limits::lowest() or -numeric_limits::infinity(). libc++ and Boost.Random's implementation returns -numeric_limits::infinity().

std::numeric_limits<result_type>::min(), given that result_type is a double by default (in any case a floating point type) is __DBL_MIN__ which is exactly -infinity. If you are seeing something else, it could be that __DBL_MIN__ is broken for your target, certainly isn't for x86_64-linux, and you should file a different bug report, not having to do with the C++ library.

Never mind, I misread the value od __DBL_MIN__, I'll fix this momentarily, sorry.

Note: it's indeed debatable whether lowest or -infinity is better. For now I'm going to minimally change our code to use lowest, because we use max the other side, and infinities aren't unconditionally available.

Fixed for 4.8.2 and 4.9.0. Thanks again for the report and sorry about the lapse.