https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67570
--- Comment #4 from BENAÏSSA <ka_bena at yahoo dot fr> --- Thank you very much for your reply. Please do not take care of the first set of values for MIN_NORMALIZED and in place you can test those new values. MIN_NORMALIZED 1.755494 E-038 for float 2.225074 E-308 for double 3.362103 E-4932 for __float128 All remainded values stays unchanged. Addendum to precedent note: the proposal is valid for any floating point operation between two float or more with final result lower than (float)MIN_DENORMALIZED, and I will consult the C99/C11 standards and bug 323. I apologize by advance. A.Benaïssa Le Mercredi 16 septembre 2015 16h45, joseph at codesourcery dot com <gcc-bugzi...@gcc.gnu.org> a écrit : 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.