https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114050
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> --- There is no bug, the compiler implements what the standard says for the FLT_EVAL_METHOD == 2 case. If you want in that mode a constant guaranteed to be in double precision, you need to explicitly cast the constant to double, otherwise it will have long double precision with type of double and that extra precision is only rounded to double precision on casts and assignments.