https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98202
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Other option would be just hardcode those 4 constants by hand: #define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128 #define __FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128 #define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128 #define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128 #define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128 with __extension__ before it and Q suffix instead of F128. For __float128 I think those constants aren't going to change. Advantage of doing that would be that even various versions of clang++ support that, while F128 suffix isn't supported. So, use: (__extension__ 0x1.ffffffffffffffffffffffffffffp+16383Q) (__extension__ 0x1.ffffffffffffffffffffffffffffp+16383Q) (__extension__ 0x1.0000000000000000000000000000p-16382Q) (__extension__ 0x1.0000000000000000000000000000p-112Q) (__extension__ 0x0.0000000000000000000000000001p-16382Q) instead of those 4 constants.