aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-12-04 10:20:44 +0000
committerJoseph Myers <josmyers@redhat.com>2024-12-04 10:20:44 +0000
commit0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3 (patch)
tree532181355fdc15427d84f2927db7ee807d2618c4 /sysdeps
parent1c4cebb84b9e33aea9a90adfadb031d1f1eba927 (diff)
downloadglibc-0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3.tar.xz
glibc-0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3.zip
Implement C23 cospi
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the cospi functions (cos(pi*x)). Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps24
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions3
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-cospi.c8
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist8
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist8
-rw-r--r--sysdeps/powerpc/nofpu/Makefile1
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist9
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist8
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps24
38 files changed, 287 insertions, 0 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 43ffbd7978..bef5e364ca 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -792,6 +792,30 @@ float: 2
float128: 3
ldouble: 3
+Function: "cospi":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "cospi_downward":
+double: 1
+float: 1
+float128: 2
+ldouble: 1
+
+Function: "cospi_towardzero":
+double: 1
+float: 1
+float128: 2
+ldouble: 1
+
+Function: "cospi_upward":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
Function: Real part of "cpow":
double: 2
float: 5
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index bd73016e93..a828017ea9 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -144,6 +144,9 @@ libm {
__log10p1ieee128;
__logp1ieee128;
}
+ GLIBC_2.41 {
+ __cospiieee128;
+ }
}
libc {
LDBL_IBM128_VERSION {
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 14fd715003..16d31364d6 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -42,6 +42,7 @@ libnldbl-calls = \
copysign \
cos \
cosh \
+ cospi \
cpow \
cproj \
creal \
@@ -280,6 +281,7 @@ CFLAGS-nldbl-conj.c = -fno-builtin-conjl
CFLAGS-nldbl-copysign.c = -fno-builtin-copysignl
CFLAGS-nldbl-cos.c = -fno-builtin-cosl
CFLAGS-nldbl-cosh.c = -fno-builtin-coshl
+CFLAGS-nldbl-cospi.c = -fno-builtin-cospi
CFLAGS-nldbl-cpow.c = -fno-builtin-cpowl
CFLAGS-nldbl-cproj.c = -fno-builtin-cprojl
CFLAGS-nldbl-creal.c = -fno-builtin-creall
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-cospi.c b/sysdeps/ieee754/ldbl-opt/nldbl-cospi.c
new file mode 100644
index 0000000000..11d38abaae
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-cospi.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+cospil (double x)
+{
+ return cospi (x);
+}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 18113773bb..855871a951 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1221,3 +1221,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index d4c087a471..8435eb4f7d 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1078,3 +1078,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index 71ee2b67b8..8a49a44c4c 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -37,6 +37,7 @@ 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_cospil.c += -fno-builtin-fabsl
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
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 024cb8d31c..5a9367565e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1189,3 +1189,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 4b7f756811..3a4a56494d 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1348,3 +1348,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index f6eb7a535b..991b91c3ee 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -787,3 +787,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 78540e97d2..c093f709c0 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 78540e97d2..c093f709c0 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index 7a68784a1d..3b83ee5591 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -853,3 +853,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index d29139ebf1..15f904d586 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 0797f3fb72..edb05d88e0 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1228,3 +1228,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index 16bde437e9..a89a804986 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1068,3 +1068,11 @@ GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1f64x F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif128 F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospif64x F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 78540e97d2..c093f709c0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 6fd32e76e5..2aa99197bd 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -914,3 +914,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index d2c2cdbc6a..0b24fb2806 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index d2c2cdbc6a..0b24fb2806 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index a7c8ca0aec..bf321f4414 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -878,3 +878,9 @@ GLIBC_2.40 logp1f32 F
GLIBC_2.40 logp1f32x F
GLIBC_2.40 logp1f64 F
GLIBC_2.40 logp1l F
+GLIBC_2.41 cospi F
+GLIBC_2.41 cospif F
+GLIBC_2.41 cospif32 F
+GLIBC_2.41 cospif32x F
+GLIBC_2.41 cospif64 F
+GLIBC_2.41 cospil F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 8e36e16069..bca6dc8034 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/