Hash :
fda40b61
Author :
Date :
2024-08-01T00:46:49
float: Update to mostly guarantee ISO C 23 compliance. * doc/posix-headers/float.texi: Mention the various portability problems. * lib/float.in.h (FLT_HAS_SUBNORM, FLT_DECIMAL_DIG, FLT_TRUE_MIN, DBL_HAS_SUBNORM, DBL_DECIMAL_DIG, DBL_TRUE_MIN, LDBL_HAS_SUBNORM, LDBL_DECIMAL_DIG, LDBL_TRUE_MIN): New macros. (gl_LDBL_TRUE_MIN): New declaration. (FLT_IS_IEC_60559, FLT_NORM_MAX, FLT_SNAN, GNULIB_defined_FLT_SNAN, DBL_IS_IEC_60559, DBL_NORM_MAX, DBL_SNAN, GNULIB_defined_DBL_SNAN, LDBL_IS_IEC_60559, LDBL_NORM_MAX, LDBL_SNAN, GNULIB_defined_LDBL_SNAN): New macros. (gl_FLT_SNAN_t, gl_DBL_SNAN_t, gl_LDBL_SNAN_t): New types. (gl_FLT_SNAN, gl_DBL_SNAN, gl_LDBL_SNAN): New declarations. * lib/float.c (gl_LDBL_TRUE_MIN): New variable. (gl_FLT_SNAN, gl_DBL_SNAN, gl_LDBL_SNAN): New variables. * m4/float_h.m4 (gl_FLOAT_H): Add check whether float.h conforms to ISO C23. Set REPLACE_FLOAT_SNAN. * modules/float (configure.ac): Test also REPLACE_FLOAT_SNAN. Require gl_BIGENDIAN. * tests/test-float.c: Also check FLT_EVAL_METHOD, FLT_HAS_SUBNORM, FLT_DECIMAL_DIG, FLT_IS_IEC_60559, FLT_TRUE_MIN, FLT_NORM_MAX, DBL_HAS_SUBNORM, DBL_DECIMAL_DIG, DBL_IS_IEC_60559, DBL_TRUE_MIN, DBL_NORM_MAX, LDBL_HAS_SUBNORM, LDBL_DECIMAL_DIG, LDBL_IS_IEC_60559. Conditionally check LDBL_TRUE_MIN, LDBL_NORM_MAX. Include isnanf-nolibm.h, isnand-nolibm.h, isnanl-nolibm.h. (test_float): Check the values of FLT_HAS_SUBNORM, FLT_DECIMAL_DIG, FLT_TRUE_MIN, FLT_IS_IEC_60559, FLT_NORM_MAX, FLT_SNAN. (test_double): Check the values of DBL_HAS_SUBNORM, DBL_DECIMAL_DIG, DBL_TRUE_MIN, DBL_IS_IEC_60559, DBL_NORM_MAX, DBL_SNAN. (test_long_double): Check the values of LDBL_HAS_SUBNORM, LDBL_DECIMAL_DIG, LDBL_TRUE_MIN, LDBL_IS_IEC_60559, LDBL_NORM_MAX, LDBL_SNAN. * modules/float-tests (Depends-on): Add isnanf-nolibm, isnand-nolibm, isnanl-nolibm.