https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67570
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I advise looking at __FLT_MAX__, __FLT_MIN__, __FLT_DENORM_MIN__ etc. as predefined by the compiler to see the appropriate values of various constants. > Multiplying (float)MIN_NORMALIZED * (float)MIN_NORMALIZED and > viewing this value with printf("%E..) we obtains > result = 3.109021E-076 wuich is a valid double normalized value. That's a matter of excess range and precision. See the C99/C11 standards and bug 323.