about summary refs log tree commit diff
path: root/math/Makefile
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-05-20 13:41:39 +0000
committerJoseph Myers <josmyers@redhat.com>2024-05-20 13:41:39 +0000
commit79c52daf4740b00bef43e4f5a4281b3480459b38 (patch)
treecc15e0f7402870b20dbebf8d539df033806d48b0 /math/Makefile
parentcf0ca8d52e1653d4aa4311a4649af8dc541ce6b4 (diff)
downloadglibc-79c52daf4740b00bef43e4f5a4281b3480459b38.tar.gz
glibc-79c52daf4740b00bef43e4f5a4281b3480459b38.tar.xz
glibc-79c52daf4740b00bef43e4f5a4281b3480459b38.zip
Implement C23 log2p1
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.
Diffstat (limited to 'math/Makefile')
-rw-r--r--math/Makefile6
1 files changed, 6 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index 435939aedb..36024a5039 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -127,6 +127,7 @@ gen-libm-calls = \
   s_fminimum_numF \
   s_fminmagF \
   s_iseqsigF \
+  s_log2p1F \
   s_nanF \
   s_nextdownF \
   s_significandF \
@@ -650,6 +651,7 @@ libm-test-funcs-auto = \
   log10 \
   log1p \
   log2 \
+  log2p1 \
   pow \
   sin \
   sincos \
@@ -892,6 +894,7 @@ tgmath3-macros = \
   log10 \
   log1p \
   log2 \
+  log2p1 \
   logb \
   lrint \
   lround \
@@ -1264,6 +1267,7 @@ CFLAGS-e_log.c += -fno-builtin-logl
 CFLAGS-w_log10.c += -fno-builtin-log10l
 CFLAGS-w_log1p.c += -fno-builtin-log1pl
 CFLAGS-e_log2.c += -fno-builtin-log2l
+CFLAGS-s_log2p1.c += -fno-builtin-log2p1l
 CFLAGS-s_logb.c += -fno-builtin-logbl
 CFLAGS-s_lrint.c += -fno-builtin-lrintl
 CFLAGS-s_lround.c += -fno-builtin-lroundl
@@ -1389,6 +1393,7 @@ CFLAGS-e_log.c += -fno-builtin-logf32x -fno-builtin-logf64
 CFLAGS-w_log10.c += -fno-builtin-log10f32x -fno-builtin-log10f64
 CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64
 CFLAGS-e_log2.c += -fno-builtin-log2f32x -fno-builtin-log2f64
+CFLAGS-s_log2p1.c += -fno-builtin-log2p1f32x -fno-builtin-log2p1f64
 CFLAGS-s_logb.c += -fno-builtin-logbf32x -fno-builtin-logbf64
 CFLAGS-s_lrint.c += -fno-builtin-lrintf32x -fno-builtin-lrintf64
 CFLAGS-s_lround.c += -fno-builtin-lroundf32x -fno-builtin-lroundf64
@@ -1503,6 +1508,7 @@ CFLAGS-e_logf.c += -fno-builtin-logf32
 CFLAGS-w_log10f.c += -fno-builtin-log10f32
 CFLAGS-w_log1pf.c += -fno-builtin-log1pf32
 CFLAGS-e_log2f.c += -fno-builtin-log2f32
+CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32
 CFLAGS-s_logbf.c += -fno-builtin-logbf32
 CFLAGS-s_lrintf.c += -fno-builtin-lrintf32
 CFLAGS-s_lroundf.c += -fno-builtin-lroundf32