diff options
| author | Joseph Myers <josmyers@redhat.com> | 2024-12-04 10:20:44 +0000 |
|---|---|---|
| committer | Joseph Myers <josmyers@redhat.com> | 2024-12-04 10:20:44 +0000 |
| commit | 0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3 (patch) | |
| tree | 532181355fdc15427d84f2927db7ee807d2618c4 /sysdeps | |
| parent | 1c4cebb84b9e33aea9a90adfadb031d1f1eba927 (diff) | |
| download | glibc-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')
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/ |
