https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116230
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Changing all of double to `long double` (and pow to powl). and we get: -0xb.b7ffffffffffee7p+9 != -0xb.b8p+9 for: __builtin_printf("%lla != %lla\n", v, c.expected); So it is a 2 bits off but rounded to double it would be the same.