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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
Description:
A correct <float.h>.
Files:
lib/float.in.h
lib/float.c
lib/itold.c
m4/float_h.m4
Depends-on:
gen-header
include_next
configure.ac:
gl_FLOAT_H
gl_CONDITIONAL_HEADER([float.h])
AC_PROG_MKDIR_P
gl_CONDITIONAL([GL_COND_OBJ_FLOAT],
[test $REPLACE_FLOAT_LDBL = 1 || test $REPLACE_FLOAT_SNAN = 1])
gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1])
dnl Prerequisites of lib/float.c.
AC_REQUIRE([gl_BIGENDIAN])
Makefile.am:
BUILT_SOURCES += $(FLOAT_H)
# We need the following in order to create <float.h> when the system
# doesn't have one that works with the given compiler.
if GL_GENERATE_FLOAT_H
float.h: float.in.h $(top_builddir)/config.status
@NMD@ $(AM_V_GEN)$(MKDIR_P) '%reldir%'
$(gl_V_at)$(SED_HEADER_STDOUT) \
-e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
-e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
$(srcdir)/float.in.h > $@-t
$(AM_V_at)mv $@-t $@
else
float.h: $(top_builddir)/config.status
rm -f $@
endif
MOSTLYCLEANFILES += float.h float.h-t
if GL_COND_OBJ_FLOAT
lib_SOURCES += float.c
endif
if GL_COND_OBJ_ITOLD
lib_SOURCES += itold.c
endif
Include:
<float.h>
License:
LGPLv2+
Maintainer:
all