https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113679
--- Comment #8 from Дилян Палаузов <dilyan.palauzov at aegee dot org> --- -fexcess-precision=standard does not ensure consistent behaviour between gcc 13.2.1 20231205 (Red Hat 13.2.1-6) and clang 17.0.5. -msse2 -mfpmath=sse does for diff.c: #include <stdio.h> #include <math.h> int main(void) { long long l = 9223372036854775806; double d = 9223372036854775808.0; printf("%f\n", (double)l - d); printf("%i\n", pow(3.3, 4.4) == 191.18831051580915); return 0; } $ gcc -lm -fexcess-precision=standard -m32 -o diff diff.c && ./diff 0.000000 0 $ clang -lm -fexcess-precision=standard -m32 -o diff diff.c && ./diff 0.000000 1 $ gcc -lm -fexcess-precision=standard -m64 -o diff diff.c && ./diff 0.000000 1 $ clang -lm -fexcess-precision=standard -m64 -o diff diff.c && ./diff 0.000000 1 $ gcc -lm -fexcess-precision=fast -m32 -o diff diff.c && ./diff -2.000000 1 $ clang -lm -fexcess-precision=fast -m32 -o diff diff.c && ./diff 0.000000 1 $ gcc -lm -fexcess-precision=fast -m64 -o diff diff.c && ./diff 0.000000 1 $ clang -lm -fexcess-precision=fast -m64 -o diff diff.c && ./diff 0.000000 1 $ gcc -lm -msse2 -mfpmath=sse -m32 -o diff diff.c && ./diff 0.000000 1 $ clang -lm -msse2 -mfpmath=sse -m32 -o diff diff.c && ./diff 0.000000 1 $ gcc -lm -msse2 -mfpmath=sse -m64 -o diff diff.c && ./diff 0.000000 1 $ clang -lm -msse2 -mfpmath=sse -m64 -o diff diff.c && ./diff 0.000000 1 cl.exe also prints 0.000000 and 1