mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 21:10:07 +00:00
79c52daf47
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the log2p1 functions (log2(1+x): like log1p, but for base-2 logarithms). This illustrates the intended structure of implementations of all these function families: define them initially with a type-generic template implementation. If someone wishes to add type-specific implementations, it is likely such implementations can be both faster and more accurate than the type-generic one and can then override it for types for which they are implemented (adding benchmarks would be desirable in such cases to demonstrate that a new implementation is indeed faster). The test inputs are copied from those for log1p. Note that these changes make gen-auto-libm-tests depend on MPFR 4.2 (or later). The bulk of the changes are fairly generic for any such new function. (sysdeps/powerpc/nofpu/Makefile only needs changing for those type-generic templates that use fabs.) Tested for x86_64 and x86, and with build-many-glibcs.py.
59 lines
2.6 KiB
Makefile
59 lines
2.6 KiB
Makefile
# Makefile fragment for PowerPC with no FPU.
|
|
|
|
ifeq ($(subdir),soft-fp)
|
|
sysdep_routines += $(gcc-single-routines) $(gcc-double-routines) \
|
|
sqrtsf2 sqrtdf2 \
|
|
sim-full atomic-feholdexcept atomic-feclearexcept \
|
|
atomic-feupdateenv flt-rounds
|
|
endif
|
|
|
|
ifeq ($(subdir),math)
|
|
libm-support += fenv_const
|
|
CPPFLAGS += -I../soft-fp/
|
|
# The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
|
|
# "expand_abs wrong default code for floating point"
|
|
# As this is not a regression, a fix is not likely to go into
|
|
# gcc-4.1.1 and may be too late for gcc-4.2. So we need these flags
|
|
# until the fix in a gcc release and glibc drops support for earlier
|
|
# versions of gcc.
|
|
#
|
|
# This bug can cause wrong signs of zero results from fabsl, and
|
|
# spurious "invalid" exceptions from comparisons with NaN in the
|
|
# default code sequence generated. The fpclassify expansion used by
|
|
# __builtin_fpclassify, which is used in the absence of
|
|
# -fsignaling-nans, uses __builtin_fabsl, and is not affected by
|
|
# -fno-builtin-fabsl, so requiring -fsignaling-nans for some affected
|
|
# source files.
|
|
CFLAGS-e_atan2l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_hypotl.c += -fno-builtin-fabsl
|
|
CFLAGS-e_powl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_cacosl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_cacoshl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_casinhl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_catanl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_catanhl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_ccoshl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-s_cexpl.c += $(config-cflags-signaling-nans)
|
|
CFLAGS-s_csinhl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-s_clogl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-s_clog10l.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-s_csinl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-s_csqrtl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_j1l_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-e_lgammal_r.c += -fno-builtin-fabsl
|
|
CFLAGS-e_log10l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_log2l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_remainderl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fmaxmagl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fminmagl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
|
|
endif
|