Add narrowing subtract functions.

This patch adds the narrowing subtract functions from TS 18661-1 to
glibc's libm: fsub, fsubl, dsubl, f32subf64, f32subf32x, f32xsubf64
for all configurations; f32subf64x, f32subf128, f64subf64x,
f64subf128, f32xsubf64x, f32xsubf128, f64xsubf128 for configurations
with _Float64x and _Float128; __nldbl_dsubl for ldbl-opt.

The changes are essentially the same as for the narrowing add
functions, so the description of those generally applies to this patch
as well.

Tested for x86_64, x86, mips64 (all three ABIs, both hard and soft
float) and powerpc, and with build-many-glibcs.py.

	* math/Makefile (libm-narrow-fns): Add sub.
	(libm-test-funcs-narrow): Likewise.
	* math/Versions (GLIBC_2.28): Add narrowing subtract functions.
	* math/bits/mathcalls-narrow.h (sub): Use __MATHCALL_NARROW.
	* math/gen-auto-libm-tests.c (test_functions): Add sub.
	* math/math-narrow.h (CHECK_NARROW_SUB): New macro.
	(NARROW_SUB_ROUND_TO_ODD): Likewise.
	(NARROW_SUB_TRIVIAL): Likewise.
	* sysdeps/ieee754/float128/float128_private.h (__fsubl): New
	macro.
	(__dsubl): Likewise.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add fsub and
	dsub.
	(CFLAGS-nldbl-dsub.c): New variable.
	(CFLAGS-nldbl-fsub.c): Likewise.
	* sysdeps/ieee754/ldbl-opt/Versions (GLIBC_2.28): Add
	__nldbl_dsubl.
	* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__nldbl_dsubl): New
	prototype.
	* manual/arith.texi (Misc FP Arithmetic): Document fsub, fsubl,
	dsubl, fMsubfN, fMsubfNx, fMxsubfN and fMxsubfNx.
	* math/auto-libm-test-in: Add tests of sub.
	* math/auto-libm-test-out-narrow-sub: New generated file.
	* math/libm-test-narrow-sub.inc: New file.
	* sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_f32xsubf64.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_fsub.c: Likewise.
	* sysdeps/ieee754/float128/s_f32subf128.c: Likewise.
	* sysdeps/ieee754/float128/s_f64subf128.c: Likewise.
	* sysdeps/ieee754/float128/s_f64xsubf128.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_dsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_f64xsubf128.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_fsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_dsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_fsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_dsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_fsubl.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/nldbl-dsub.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/nldbl-fsub.c: Likewise.
	* sysdeps/ieee754/soft-fp/s_dsubl.c: Likewise.
	* sysdeps/ieee754/soft-fp/s_fsub.c: Likewise.
	* sysdeps/ieee754/soft-fp/s_fsubl.c: Likewise.
	* sysdeps/powerpc/fpu/libm-test-ulps: Update.
	* sysdeps/mach/hurd/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
This commit is contained in:
Joseph Myers 2018-03-20 00:34:52 +00:00
parent d473f01520
commit 8d3f9e85cf
61 changed files with 24780 additions and 4 deletions

View File

@ -1,3 +1,76 @@
2018-03-20 Joseph Myers <joseph@codesourcery.com>
* math/Makefile (libm-narrow-fns): Add sub.
(libm-test-funcs-narrow): Likewise.
* math/Versions (GLIBC_2.28): Add narrowing subtract functions.
* math/bits/mathcalls-narrow.h (sub): Use __MATHCALL_NARROW.
* math/gen-auto-libm-tests.c (test_functions): Add sub.
* math/math-narrow.h (CHECK_NARROW_SUB): New macro.
(NARROW_SUB_ROUND_TO_ODD): Likewise.
(NARROW_SUB_TRIVIAL): Likewise.
* sysdeps/ieee754/float128/float128_private.h (__fsubl): New
macro.
(__dsubl): Likewise.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add fsub and
dsub.
(CFLAGS-nldbl-dsub.c): New variable.
(CFLAGS-nldbl-fsub.c): Likewise.
* sysdeps/ieee754/ldbl-opt/Versions (GLIBC_2.28): Add
__nldbl_dsubl.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__nldbl_dsubl): New
prototype.
* manual/arith.texi (Misc FP Arithmetic): Document fsub, fsubl,
dsubl, fMsubfN, fMsubfNx, fMxsubfN and fMxsubfNx.
* math/auto-libm-test-in: Add tests of sub.
* math/auto-libm-test-out-narrow-sub: New generated file.
* math/libm-test-narrow-sub.inc: New file.
* sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_f32xsubf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_fsub.c: Likewise.
* sysdeps/ieee754/float128/s_f32subf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64subf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64xsubf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_f64xsubf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-dsub.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-fsub.c: Likewise.
* sysdeps/ieee754/soft-fp/s_dsubl.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fsub.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fsubl.c: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* sysdeps/mach/hurd/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2018-03-19 Joseph Myers <joseph@codesourcery.com>
[BZ #20079]

3
NEWS
View File

@ -15,6 +15,9 @@ Major new features:
- fadd, faddl, daddl and corresponding fMaddfN, fMaddfNx, fMxaddfN and
fMxaddfNx functions.
- fsub, fsubl, dsubl and corresponding fMsubfN, fMsubfNx, fMxsubfN and
fMxsubfNx functions.
* Nominative and genitive month names are now supported for the Catalan and
Czech languages. The Catalan and Greek languages now support abbreviated
alternative month names.

View File

@ -2210,6 +2210,25 @@ function without any intermediate rounding to the type of the
arguments.
@end deftypefun
@deftypefun float fsub (double @var{x}, double @var{y})
@deftypefunx float fsubl (long double @var{x}, long double @var{y})
@deftypefunx double dsubl (long double @var{x}, long double @var{y})
@deftypefunx _FloatM fMsubfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
@deftypefunx _FloatM fMsubfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
@deftypefunx _FloatMx fMxsubfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
@deftypefunx _FloatMx fMxsubfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
@standards{TS 18661-1:2014, math.h}
@standardsx{fMsubfN, TS 18661-3:2015, math.h}
@standardsx{fMsubfNx, TS 18661-3:2015, math.h}
@standardsx{fMxsubfN, TS 18661-3:2015, math.h}
@standardsx{fMxsubfNx, TS 18661-3:2015, math.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
These functions, from TS 18661-1:2014 and TS 18661-3:2015, return
@math{@var{x} - @var{y}}, rounded once to the return type of the
function without any intermediate rounding to the type of the
arguments.
@end deftypefun
@node Complex Numbers
@section Complex Numbers
@pindex complex.h

View File

@ -89,7 +89,7 @@ libm-compat-calls = \
w_lgammaF_r_compat w_lgammaF_compat2 w_expF_compat \
w_lgamma_compatF k_standardF
libm-narrow-fns = add
libm-narrow-fns = add sub
libm-narrow-types-basic = s_fF s_f32xFf64
libm-narrow-types-ldouble-yes = s_fFl s_dFl
libm-narrow-types-float128-yes = s_f32Ff128 s_f64Ff128 s_f64xFf128
@ -284,7 +284,7 @@ libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
scalbln scalbn setpayload setpayloadsig signbit \
significand totalorder totalordermag trunc ufromfp \
ufromfpx
libm-test-funcs-narrow = add
libm-test-funcs-narrow = add sub
libm-test-funcs-all = $(libm-test-funcs-auto) $(libm-test-funcs-noauto)
libm-test-c-auto = $(foreach f,$(libm-test-funcs-auto),libm-test-$(f).c)
libm-test-c-noauto = $(foreach f,$(libm-test-funcs-noauto),libm-test-$(f).c)

View File

@ -555,9 +555,14 @@ libm {
# Functions not involving _Float64x or _Float128, for all configurations.
fadd; faddl; daddl;
f32addf32x; f32addf64; f32xaddf64;
fsub; fsubl; dsubl;
f32subf32x; f32subf64; f32xsubf64;
# Functions involving _Float64x or _Float128, for some configurations.
f32addf64x; f32addf128;
f32xaddf64x; f32xaddf128; f64addf64x; f64addf128;
f64xaddf128;
f32subf64x; f32subf128;
f32xsubf64x; f32xsubf128; f64subf64x; f64subf128;
f64xsubf128;
}
}

View File

@ -7195,6 +7195,101 @@ sinh 0x2.c5d37700c6bb03a8p+12 no-test-inline
sinh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12 no-test-inline
sinh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline
sub 0 0
sub 0 -0
sub -0 0
sub -0 -0
sub max max
sub max -max
sub -max max
sub -max -max
sub min min missing-underflow:arg-ibm128
sub min -min missing-underflow:arg-ibm128
sub -min min missing-underflow:arg-ibm128
sub -min -min missing-underflow:arg-ibm128
sub min_subnorm min_subnorm missing-underflow:arg-ibm128
sub min_subnorm -min_subnorm missing-underflow:arg-ibm128
sub -min_subnorm min_subnorm missing-underflow:arg-ibm128
sub -min_subnorm -min_subnorm missing-underflow:arg-ibm128
sub 1 2
sub 1 -2
sub -1 2
sub -1 -2
sub 100.5 0.75
sub 100.5 -0.75
sub -100.5 0.75
sub -100.5 -0.75
sub 1 0x1p-23
sub 1 0x1.7fp-23
sub 1 0x1.8p-23
sub 1 0x1.81p-23
sub 1 0x1p-24
sub 1 0x1.1p-24
sub 1 0x0.fp-24
sub 1 min
sub 1 -min
sub 1 min_subnorm
sub 1 -min_subnorm
sub -1 min
sub -1 -min
sub -1 min_subnorm
sub -1 -min_subnorm
# Cases where larger argument is half way between two values of a
# floating-point format, so that double rounding would sometimes yield
# the wrong result.
sub 0x1.000001p0 min
sub 0x1.000001p0 -min
sub 0x1.000001p0 min_subnorm
sub 0x1.000001p0 -min_subnorm
sub -0x1.000001p0 min
sub -0x1.000001p0 -min
sub -0x1.000001p0 min_subnorm
sub -0x1.000001p0 -min_subnorm
sub 0x1.00000000000008p0 min
sub 0x1.00000000000008p0 -min
sub 0x1.00000000000008p0 min_subnorm
sub 0x1.00000000000008p0 -min_subnorm
sub -0x1.00000000000008p0 min
sub -0x1.00000000000008p0 -min
sub -0x1.00000000000008p0 min_subnorm
sub -0x1.00000000000008p0 -min_subnorm
sub 0x1.0000000000000001p0 min
sub 0x1.0000000000000001p0 -min
sub 0x1.0000000000000001p0 min_subnorm
sub 0x1.0000000000000001p0 -min_subnorm
sub -0x1.0000000000000001p0 min
sub -0x1.0000000000000001p0 -min
sub -0x1.0000000000000001p0 min_subnorm
sub -0x1.0000000000000001p0 -min_subnorm
# Two values representable in the same format with difference very
# close to half way between two representable values. In particular,
# verify that there is no intermediate rounding to 64 bits when
# subtracting two double values.
sub 1 0x1.000002p-24
sub 1 -0x1.000002p-24
sub 1 0x0.ffffffp-24
sub 1 -0x0.ffffffp-24
sub 0x1.000002p0 0x1.000002p-24
sub 0x1.000002p0 -0x1.000002p-24
sub 0x1.000002p0 0x0.ffffffp-24
sub 0x1.000002p0 -0x0.ffffffp-24
sub 1 0x1.0000000000001p-53
sub 1 -0x1.0000000000001p-53
sub 1 0x0.fffffffffffff8p-53
sub 1 -0x0.fffffffffffff8p-53
sub 0x1.0000000000001p0 0x1.0000000000001p-53
sub 0x1.0000000000001p0 -0x1.0000000000001p-53
sub 0x1.0000000000001p0 0x0.fffffffffffff8p-53
sub 0x1.0000000000001p0 -0x0.fffffffffffff8p-53
sub 1 0x1.0000000000000002p-64
sub 1 -0x1.0000000000000002p-64
sub 1 0x0.ffffffffffffffffp-64
sub 1 -0x0.ffffffffffffffffp-64
sub 0x1.0000000000000002p0 0x1.0000000000000002p-64
sub 0x1.0000000000000002p0 -0x1.0000000000000002p-64
sub 0x1.0000000000000002p0 0x0.ffffffffffffffffp-64
sub 0x1.0000000000000002p0 -0x0.ffffffffffffffffp-64
sqrt 0
sqrt -0
sqrt 2209

File diff suppressed because it is too large Load Diff

View File

@ -22,3 +22,6 @@
/* Add. */
__MATHCALL_NARROW (__MATHCALL_NAME (add), __MATHCALL_REDIR_NAME (add), 2);
/* Subtract. */
__MATHCALL_NARROW (__MATHCALL_NAME (sub), __MATHCALL_REDIR_NAME (sub), 2);

View File

@ -584,6 +584,7 @@ static test_function test_functions[] =
FUNC ("sincos", ARGS1 (type_fp), RET2 (type_fp, type_fp), false, false,
false, CALC (mpfr_f_11, mpfr_sin_cos)),
FUNC_mpfr_f_f ("sinh", mpfr_sinh, false),
FUNC_mpfr_ff_f ("sub", mpfr_sub, true),
FUNC_mpfr_f_f ("sqrt", mpfr_sqrt, true),
FUNC_mpfr_f_f ("tan", mpfr_tan, false),
FUNC_mpfr_f_f ("tanh", mpfr_tanh, false),

View File

@ -0,0 +1,179 @@
/* Test narrowing subtract.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_aa_f_data sub_test_data[] =
{
TEST_aa_f (sub, arg_qnan_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_qnan_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_qnan_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_qnan_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_qnan_value, arg_plus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, -arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, -arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_qnan_value, -arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_zero, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_zero, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_subnorm_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_subnorm_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_max_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_max_value, arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_plus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, -arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, -arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_qnan_value, -arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_zero, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_zero, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_subnorm_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_subnorm_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_max_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_max_value, -arg_qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_snan_value, arg_plus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, -arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, -arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_snan_value, -arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_plus_zero, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_minus_zero, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_plus_infty, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_minus_infty, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_min_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_min_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_min_subnorm_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_min_subnorm_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_max_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_max_value, arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_plus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, -arg_min_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, -arg_min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_snan_value, -arg_max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_plus_zero, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_minus_zero, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_plus_infty, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_minus_infty, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_min_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_min_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_min_subnorm_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_min_subnorm_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_max_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, -arg_max_value, -arg_snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_aa_f (sub, arg_plus_infty, arg_plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_aa_f (sub, arg_plus_infty, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_aa_f (sub, arg_plus_infty, arg_plus_zero, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, arg_minus_zero, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, arg_min_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, -arg_min_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, arg_min_subnorm_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, -arg_min_subnorm_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_plus_infty, arg_max_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED|XFAIL_ROUNDING_IBM128_LIBGCC),
TEST_aa_f (sub, arg_plus_infty, -arg_max_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED|XFAIL_ROUNDING_IBM128_LIBGCC),
TEST_aa_f (sub, arg_plus_zero, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_zero, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_subnorm_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_subnorm_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_max_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_max_value, arg_plus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_plus_zero, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_minus_zero, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_min_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, -arg_min_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_min_subnorm_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, -arg_min_subnorm_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_infty, arg_max_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED|XFAIL_ROUNDING_IBM128_LIBGCC),
TEST_aa_f (sub, arg_minus_infty, -arg_max_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED|XFAIL_ROUNDING_IBM128_LIBGCC),
TEST_aa_f (sub, arg_plus_zero, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_minus_zero, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_min_subnorm_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_min_subnorm_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, arg_max_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_aa_f (sub, -arg_max_value, arg_minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
AUTO_TESTS_aa_f (sub),
};
static void
sub_test (void)
{
ALL_RM_TEST (sub, 1, sub_test_data, RUN_TEST_LOOP_aa_f, END);
}
static void
do_test (void)
{
sub_test ();
}
/*
* Local Variables:
* mode:c
* End:
*/

View File

@ -107,6 +107,64 @@
} \
while (0)
/* Check for error conditions from a narrowing subtract function
returning RET with arguments X and Y and set errno as needed.
Overflow and underflow can occur for finite arguments and a domain
error for infinite ones. */
#define CHECK_NARROW_SUB(RET, X, Y) \
do \
{ \
if (!isfinite (RET)) \
{ \
if (isnan (RET)) \
{ \
if (!isnan (X) && !isnan (Y)) \
__set_errno (EDOM); \
} \
else if (isfinite (X) && isfinite (Y)) \
__set_errno (ERANGE); \
} \
else if ((RET) == 0 && (X) != (Y)) \
__set_errno (ERANGE); \
} \
while (0)
/* Implement narrowing subtract using round-to-odd. The arguments are
X and Y, the return type is TYPE and UNION, MANTISSA and SUFFIX are
as for ROUND_TO_ODD. */
#define NARROW_SUB_ROUND_TO_ODD(X, Y, TYPE, UNION, SUFFIX, MANTISSA) \
do \
{ \
TYPE ret; \
\
/* Ensure a zero result is computed in the original rounding \
mode. */ \
if ((X) == (Y)) \
ret = (TYPE) ((X) - (Y)); \
else \
ret = (TYPE) ROUND_TO_ODD (math_opt_barrier (X) - (Y), \
UNION, SUFFIX, MANTISSA); \
\
CHECK_NARROW_SUB (ret, (X), (Y)); \
return ret; \
} \
while (0)
/* Implement a narrowing subtract function that is not actually
narrowing or where no attempt is made to be correctly rounding (the
latter only applies to IBM long double). The arguments are X and Y
and the return type is TYPE. */
#define NARROW_SUB_TRIVIAL(X, Y, TYPE) \
do \
{ \
TYPE ret; \
\
ret = (TYPE) ((X) - (Y)); \
CHECK_NARROW_SUB (ret, (X), (Y)); \
return ret; \
} \
while (0)
/* The following macros declare aliases for a narrowing function. The
sole argument is the base name of a family of functions, such as
"add". If any platform changes long double format after the

View File

@ -0,0 +1,41 @@
/* Subtract _Float64 values, converting the result to _Float32x. i386 version.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <fpu_control.h>
#include <math_private.h>
#include <math-narrow.h>
_Float32x
__f32xsubf64 (_Float64 x, _Float64 y)
{
/* To avoid double rounding, set double precision for the subtraction.
math_narrow_eval is still needed to eliminate excess range in the
case of overflow. If the result of the subtraction is in the
subnormal range for double, it is exact, so no issues of double
rounding for subnormals arise. */
fpu_control_t cw, cw_double;
_FPU_GETCW (cw);
cw_double = (cw & ~_FPU_EXTENDED) | _FPU_DOUBLE;
_FPU_SETCW (cw_double);
_Float32x ret = math_narrow_eval (x - y);
_FPU_SETCW (cw);
CHECK_NARROW_SUB (ret, x, y);
return ret;
}
libm_alias_float32x_float64 (sub)

View File

@ -0,0 +1,30 @@
/* Subtract _Float64 values, converting the result to _Float32x.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define dsubl __hide_dsubl
#include <math.h>
#undef dsubl
#include <math-narrow.h>
_Float32x
__f32xsubf64 (_Float64 x, _Float64 y)
{
NARROW_SUB_TRIVIAL (x, y, _Float32x);
}
libm_alias_float32x_float64 (sub)

View File

@ -0,0 +1,34 @@
/* Subtract double values, narrowing the result to float.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32subf64 __hide_f32subf64
#define f32subf32x __hide_f32subf32x
#define fsubl __hide_fsubl
#include <math.h>
#undef f32subf64
#undef f32subf32x
#undef fsubl
#include <math-narrow.h>
float
__fsub (double x, double y)
{
NARROW_SUB_ROUND_TO_ODD (x, y, float, union ieee754_double, , mantissa1);
}
libm_alias_float_double (sub)

View File

@ -258,6 +258,8 @@
#define __faddl __f32addf128
#define __daddl __f64addf128
#define __fsubl __f32subf128
#define __dsubl __f64subf128
/* __nexttowardf128 is not _Float128 API. */
#define __nexttowardl __nexttowardf128_do_not_use

View File

@ -0,0 +1,6 @@
#define f32subf64x __hide_f32subf64x
#define f32subf128 __hide_f32subf128
#include <float128_private.h>
#undef f32subf64x
#undef f32subf128
#include "../ldbl-128/s_fsubl.c"

View File

@ -0,0 +1,10 @@
#define f32xsubf64x __hide_f32xsubf64x
#define f32xsubf128 __hide_f32xsubf128
#define f64subf64x __hide_f64subf64x
#define f64subf128 __hide_f64subf128
#include <float128_private.h>
#undef f32xsubf64x
#undef f32xsubf128
#undef f64subf64x
#undef f64subf128
#include "../ldbl-128/s_dsubl.c"

View File

@ -0,0 +1,2 @@
#include <float128_private.h>
#include "../ldbl-128/s_f64xsubf128.c"

View File

@ -0,0 +1,37 @@
/* Subtract long double (ldbl-128) values, narrowing the result to double.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32xsubf64x __hide_f32xsubf64x
#define f32xsubf128 __hide_f32xsubf128
#define f64subf64x __hide_f64subf64x
#define f64subf128 __hide_f64subf128
#include <math.h>
#undef f32xsubf64x
#undef f32xsubf128
#undef f64subf64x
#undef f64subf128
#include <math-narrow.h>
double
__dsubl (_Float128 x, _Float128 y)
{
NARROW_SUB_ROUND_TO_ODD (x, y, double, union ieee854_long_double, l,
mantissa3);
}
libm_alias_double_ldouble (sub)

View File

@ -0,0 +1,38 @@
/* Subtract _Float128 values, converting the result to _Float64x.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow.h>
/* math_ldbl.h defines _Float128 to long double for this directory,
but when they are different, this function must be defined with
_Float128 arguments to avoid defining an alias with an incompatible
type. */
#undef _Float128
_Float64x
__f64xsubf128 (_Float128 x, _Float128 y)
{
#if __HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128
NARROW_SUB_ROUND_TO_ODD (x, y, _Float64x, union ieee854_long_double, l,
mantissa3);
#else
NARROW_SUB_TRIVIAL (x, y, _Float64x);
#endif
}
libm_alias_float64x_float128 (sub)

View File

@ -0,0 +1,33 @@
/* Subtract long double (ldbl-128) values, narrowing the result to float.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32subf64x __hide_f32subf64x
#define f32subf128 __hide_f32subf128
#include <math.h>
#undef f32subf64x
#undef f32subf128
#include <math-narrow.h>
float
__fsubl (_Float128 x, _Float128 y)
{
NARROW_SUB_ROUND_TO_ODD (x, y, float, union ieee854_long_double, l,
mantissa3);
}
libm_alias_float_ldouble (sub)

View File

@ -0,0 +1,27 @@
/* Subtract long double (ldbl-128ibm) values, narrowing the result to double.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow.h>
double
__dsubl (long double x, long double y)
{
NARROW_SUB_TRIVIAL (x, y, double);
}
libm_alias_double_ldouble (sub)

View File

@ -0,0 +1,27 @@
/* Subtract long double (ldbl-128ibm) values, narrowing the result to float.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow.h>
float
__fsubl (long double x, long double y)
{
NARROW_SUB_TRIVIAL (x, y, float);
}
libm_alias_float_ldouble (sub)

View File

@ -0,0 +1,33 @@
/* Subtract long double (ldbl-96) values, narrowing the result to double.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32xsubf64x __hide_f32xsubf64x
#define f64subf64x __hide_f64subf64x
#include <math.h>
#undef f32xsubf64x
#undef f64subf64x
#include <math-narrow.h>
double
__dsubl (long double x, long double y)
{
NARROW_SUB_ROUND_TO_ODD (x, y, double, union ieee854_long_double, l,
mantissa1);
}
libm_alias_double_ldouble (sub)

View File

@ -0,0 +1,31 @@
/* Subtract long double (ldbl-96) values, narrowing the result to float.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32subf64x __hide_f32subf64x
#include <math.h>
#undef f32subf64x
#include <math-narrow.h>
float
__fsubl (long double x, long double y)
{
NARROW_SUB_ROUND_TO_ODD (x, y, float, union ieee854_long_double, l,
mantissa1);
}
libm_alias_float_ldouble (sub)

View File

@ -44,7 +44,8 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \
nextup nextdown totalorder totalordermag getpayload \
canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd
roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
fsub dsub
libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
libnldbl-inhibit-o = $(object-suffixes)
libnldbl-static-only-routines = $(libnldbl-routines)
@ -87,6 +88,7 @@ CFLAGS-nldbl-csqrt.c = -fno-builtin-csqrtl
CFLAGS-nldbl-ctan.c = -fno-builtin-ctanl
CFLAGS-nldbl-ctanh.c = -fno-builtin-ctanhl
CFLAGS-nldbl-dadd.c = -fno-builtin-daddl
CFLAGS-nldbl-dsub.c = -fno-builtin-dsubl
CFLAGS-nldbl-erf.c = -fno-builtin-erfl
CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl
CFLAGS-nldbl-exp.c = -fno-builtin-expl
@ -107,6 +109,7 @@ CFLAGS-nldbl-fmod.c = -fno-builtin-fmodl
CFLAGS-nldbl-frexp.c = -fno-builtin-frexpl
CFLAGS-nldbl-fromfp.c = -fno-builtin-fromfpl
CFLAGS-nldbl-fromfpx.c = -fno-builtin-fromfpxl
CFLAGS-nldbl-fsub.c = -fno-builtin-fsubl
CFLAGS-nldbl-gamma.c = -fno-builtin-gammal
CFLAGS-nldbl-getpayload.c = -fno-builtin-getpayloadl
CFLAGS-nldbl-hypot.c = -fno-builtin-hypotl

View File

@ -101,6 +101,6 @@ libm {
# Functions taking long double = double argument and rounding
# result to double (same as f32x*f64 functions, but those names
# are not reserved in TS 18661-1).
__nldbl_daddl;
__nldbl_daddl; __nldbl_dsubl;
}
}

View File

@ -104,5 +104,6 @@ extern void __nldbl___vsyslog_chk (int, int, const char *, va_list);
/* The original declarations of these were hidden by the including
file. */
extern double __nldbl_daddl (double, double) __THROW;
extern double __nldbl_dsubl (double, double) __THROW;
#endif /* __NLDBL_COMPAT_H */

View File

@ -0,0 +1,28 @@
/* Compatibility routine for IEEE double as long double for dsub.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define dsubl __hide_dsubl
#include "nldbl-compat.h"
#undef dsubl
double
attribute_hidden
dsubl (double x, double y)
{
return __nldbl_dsubl (x, y);
}

View File

@ -0,0 +1,28 @@
/* Compatibility routine for IEEE double as long double for fsub.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define fsubl __hide_fsubl
#include "nldbl-compat.h"
#undef fsubl
float
attribute_hidden
fsubl (double x, double y)
{
return fsub (x, y);
}

View File

@ -0,0 +1,59 @@
/* Subtract long double (ldbl-128) values, narrowing the result to
double, using soft-fp.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32xsubf64x __hide_f32xsubf64x
#define f32xsubf128 __hide_f32xsubf128
#define f64subf64x __hide_f64subf64x
#define f64subf128 __hide_f64subf128
#include <math.h>
#undef f32xsubf64x
#undef f32xsubf128
#undef f64subf64x
#undef f64subf128
#include <math-narrow.h>
#include <soft-fp.h>
#include <double.h>
#include <quad.h>
double
__dsubl (_Float128 x, _Float128 y)
{
FP_DECL_EX;
FP_DECL_Q (X);
FP_DECL_Q (Y);
FP_DECL_Q (R);
FP_DECL_D (RN);
double ret;
FP_INIT_ROUNDMODE;
FP_UNPACK_SEMIRAW_Q (X, x);
FP_UNPACK_SEMIRAW_Q (Y, y);
FP_SUB_Q (R, X, Y);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
FP_TRUNC (D, Q, 2, 4, RN, R);
#else
FP_TRUNC (D, Q, 1, 2, RN, R);
#endif
FP_PACK_SEMIRAW_D (ret, RN);
FP_HANDLE_EXCEPTIONS;
CHECK_NARROW_SUB (ret, x, y);
return ret;
}
libm_alias_double_ldouble (sub)

View File

@ -0,0 +1,56 @@
/* Subtract double values, narrowing the result to float, using soft-fp.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32subf64 __hide_f32subf64
#define f32subf32x __hide_f32subf32x
#define fsubl __hide_fsubl
#include <math.h>
#undef f32subf64
#undef f32subf32x
#undef fsubl
#include <math-narrow.h>
#include <soft-fp.h>
#include <single.h>
#include <double.h>
float
__fsub (double x, double y)
{
FP_DECL_EX;
FP_DECL_D (X);
FP_DECL_D (Y);
FP_DECL_D (R);
FP_DECL_S (RN);
float ret;
FP_INIT_ROUNDMODE;
FP_UNPACK_SEMIRAW_D (X, x);
FP_UNPACK_SEMIRAW_D (Y, y);
FP_SUB_D (R, X, Y);
#if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
FP_TRUNC (S, D, 1, 2, RN, R);
#else
FP_TRUNC (S, D, 1, 1, RN, R);
#endif
FP_PACK_SEMIRAW_S (ret, RN);
FP_HANDLE_EXCEPTIONS;
CHECK_NARROW_SUB (ret, x, y);
return ret;
}
libm_alias_float_double (sub)

View File

@ -0,0 +1,55 @@
/* Subtract long double (ldbl-128) values, narrowing the result to
float, using soft-fp.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define f32subf64x __hide_f32subf64x
#define f32subf128 __hide_f32subf128
#include <math.h>
#undef f32subf64x
#undef f32subf128
#include <math-narrow.h>
#include <soft-fp.h>
#include <single.h>
#include <quad.h>
float
__fsubl (_Float128 x, _Float128 y)
{
FP_DECL_EX;
FP_DECL_Q (X);
FP_DECL_Q (Y);
FP_DECL_Q (R);
FP_DECL_S (RN);
float ret;
FP_INIT_ROUNDMODE;
FP_UNPACK_SEMIRAW_Q (X, x);
FP_UNPACK_SEMIRAW_Q (Y, y);
FP_SUB_Q (R, X, Y);
#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
FP_TRUNC (S, Q, 1, 4, RN, R);
#else
FP_TRUNC (S, Q, 1, 2, RN, R);
#endif
FP_PACK_SEMIRAW_S (ret, RN);
FP_HANDLE_EXCEPTIONS;
CHECK_NARROW_SUB (ret, x, y);
return ret;
}
libm_alias_float_ldouble (sub)

View File

@ -1026,16 +1026,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -2635,6 +2635,10 @@ Function: "sqrt_upward":
ildouble: 1
ldouble: 1
Function: "sub_ldouble":
double: 1
float: 1
Function: "tan":
float: 3
float128: 1

View File

@ -988,15 +988,28 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -998,19 +998,33 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 __c1_cabsf F
GLIBC_2.3.4 __c1_cacosf F

View File

@ -437,11 +437,17 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F

View File

@ -749,10 +749,16 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 exp2l F

View File

@ -1035,16 +1035,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -964,16 +964,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -437,11 +437,17 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F

View File

@ -791,9 +791,15 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -748,8 +748,14 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -750,11 +750,17 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 exp2l F
_gp_disp _gp_disp A

View File

@ -990,16 +990,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -748,8 +748,14 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -793,12 +793,19 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F

View File

@ -792,12 +792,19 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F

View File

@ -1029,16 +1029,30 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -468,12 +468,19 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 _LIB_VERSION D 0x4
GLIBC_2.3 __clog10 F

View File

@ -970,15 +970,28 @@ GLIBC_2.27 ynf64x F
GLIBC_2.27 ynl F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -988,19 +988,33 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F

View File

@ -986,19 +986,33 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F

View File

@ -749,10 +749,16 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 exp2l F

View File

@ -995,19 +995,33 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 __nldbl_daddl F
GLIBC_2.28 __nldbl_dsubl F
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F

View File

@ -989,16 +989,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -749,8 +749,14 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -749,8 +749,14 @@ GLIBC_2.27 ynf32x F
GLIBC_2.27 ynf64 F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F

View File

@ -1024,16 +1024,29 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
GLIBC_2.4 GLIBC_2.4 A

View File

@ -1023,15 +1023,28 @@ GLIBC_2.27 ynf64 F
GLIBC_2.27 ynf64x F
GLIBC_2.28 GLIBC_2.28 A
GLIBC_2.28 daddl F
GLIBC_2.28 dsubl F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32addf64x F
GLIBC_2.28 f32subf128 F
GLIBC_2.28 f32subf32x F
GLIBC_2.28 f32subf64 F
GLIBC_2.28 f32subf64x F
GLIBC_2.28 f32xaddf128 F
GLIBC_2.28 f32xaddf64 F
GLIBC_2.28 f32xaddf64x F
GLIBC_2.28 f32xsubf128 F
GLIBC_2.28 f32xsubf64 F
GLIBC_2.28 f32xsubf64x F
GLIBC_2.28 f64addf128 F
GLIBC_2.28 f64addf64x F
GLIBC_2.28 f64subf128 F
GLIBC_2.28 f64subf64x F
GLIBC_2.28 f64xaddf128 F
GLIBC_2.28 f64xsubf128 F
GLIBC_2.28 fadd F
GLIBC_2.28 faddl F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F