summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2016-11-03 13:03:55 +0100
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-11-03 13:03:55 +0100
commit3384c45e66ddf18f235654b67ae34ac7dcb07534 (patch)
treeedbd0f03b72acb5961f7919e13da34a34a84fc23
parent29d1023614fcfef8520edec8b64e9f8953d9a121 (diff)
math: sync with GNU libc
The format of the ULPS files have changed, non-glibc architecture files needs to be updated later. Add all math tests from latest GNU libc and allow to compile and run them on uClibc-ng and GNU libc systems.
-rw-r--r--test/math/Makefile.in39
-rw-r--r--test/math/auto-libm-test-in4796
-rw-r--r--test/math/auto-libm-test-out312115
-rw-r--r--test/math/fenv.h4
-rw-r--r--test/math/gen-libm-have-vector-test.sh52
-rwxr-xr-xtest/math/gen-libm-test.pl857
-rw-r--r--test/math/libm-test-ulps-alpha2262
-rw-r--r--test/math/libm-test-ulps-arm5297
-rw-r--r--test/math/libm-test-ulps-hppa1642
-rw-r--r--test/math/libm-test-ulps-i3862089
-rw-r--r--test/math/libm-test-ulps-ia641050
-rw-r--r--test/math/libm-test-ulps-m68k1610
-rw-r--r--test/math/libm-test-ulps-microblaze322
-rw-r--r--test/math/libm-test-ulps-mips321607
-rw-r--r--test/math/libm-test-ulps-mips6410081
-rw-r--r--test/math/libm-test-ulps-nios2394
-rw-r--r--test/math/libm-test-ulps-powerpc2400
-rw-r--r--test/math/libm-test-ulps-sh929
-rw-r--r--test/math/libm-test-ulps-sparc2396
-rw-r--r--test/math/libm-test-ulps-x86_642462
-rw-r--r--test/math/libm-test.inc14953
-rw-r--r--test/math/math-tests-arch.h24
-rw-r--r--test/math/math-tests.h89
-rw-r--r--test/math/test-double-finite.c25
-rw-r--r--test/math/test-double-vlen2.h31
-rw-r--r--test/math/test-double-vlen4.h31
-rw-r--r--test/math/test-double-vlen8.h31
-rw-r--r--test/math/test-double.c20
-rw-r--r--test/math/test-double.h30
-rw-r--r--test/math/test-fenv.c788
-rw-r--r--test/math/test-float-finite.c25
-rw-r--r--test/math/test-float-vlen16.h31
-rw-r--r--test/math/test-float-vlen4.h31
-rw-r--r--test/math/test-float-vlen8.h31
-rw-r--r--test/math/test-float.c20
-rw-r--r--test/math/test-float.h31
-rw-r--r--test/math/test-fpucw-ieee-static.c1
-rw-r--r--test/math/test-fpucw-ieee.c27
-rw-r--r--test/math/test-fpucw-static.c1
-rw-r--r--test/math/test-fpucw.c19
-rw-r--r--test/math/test-idouble.c19
-rw-r--r--test/math/test-ifloat.c19
-rw-r--r--test/math/test-ildoubl.c19
-rw-r--r--test/math/test-ldouble-finite.c25
-rw-r--r--test/math/test-ldouble.c20
-rw-r--r--test/math/test-ldouble.h29
-rw-r--r--test/math/test-math-errno.h19
-rw-r--r--test/math/test-math-finite.h20
-rw-r--r--test/math/test-math-inline.h26
-rw-r--r--test/math/test-math-isinff.cc53
-rw-r--r--test/math/test-math-no-finite.h19
-rw-r--r--test/math/test-math-no-inline.h24
-rw-r--r--test/math/test-math-scalar.h20
-rw-r--r--test/math/test-math-vector.h98
-rw-r--r--test/math/test-matherr.c24
-rw-r--r--test/math/test-misc.c1206
-rw-r--r--test/math/test-nan-overflow.c67
-rw-r--r--test/math/test-nan-payload.c122
-rw-r--r--test/math/test-nearbyint-except-2.c80
-rw-r--r--test/math/test-nearbyint-except.c90
-rw-r--r--test/math/test-powl.c53
-rw-r--r--test/math/test-signgam-finite-c11.c1
-rw-r--r--test/math/test-signgam-finite-c99.c67
-rw-r--r--test/math/test-signgam-finite.c65
-rw-r--r--test/math/test-signgam-main.c72
-rw-r--r--test/math/test-signgam-uchar-init-static.c1
-rw-r--r--test/math/test-signgam-uchar-init.c3
-rw-r--r--test/math/test-signgam-uchar-static.c1
-rw-r--r--test/math/test-signgam-uchar.c3
-rw-r--r--test/math/test-signgam-uint-init-static.c1
-rw-r--r--test/math/test-signgam-uint-init.c3
-rw-r--r--test/math/test-signgam-uint-static.c1
-rw-r--r--test/math/test-signgam-uint.c3
-rw-r--r--test/math/test-signgam-ullong-init-static.c1
-rw-r--r--test/math/test-signgam-ullong-init.c3
-rw-r--r--test/math/test-signgam-ullong-static.c1
-rw-r--r--test/math/test-signgam-ullong.c3
-rw-r--r--test/math/test-snan.c153
-rw-r--r--test/math/test-tgmath-int.c70
-rw-r--r--test/math/test-tgmath-ret.c84
-rw-r--r--test/math/test-tgmath.c1058
-rw-r--r--test/math/test-tgmath2.c490
82 files changed, 351222 insertions, 21557 deletions
diff --git a/test/math/Makefile.in b/test/math/Makefile.in
index 3e60445..0b26805 100644
--- a/test/math/Makefile.in
+++ b/test/math/Makefile.in
@@ -5,21 +5,35 @@
TESTS_DISABLED := libm-test
# gamma (removed from TESTS, need to add "small errors are ok" machinery there)
-TESTS_DISABLED += gamma
-ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),)
-TESTS_DISABLED += test-ldouble test-ildoubl compile_test c99_test
-CFLAGS_basic-test := -DNO_LONG_DOUBLE
-endif
-
-DODIFF_rint := 1
-DODIFF_signgam := 1
+TESTS_DISABLED += gamma
+TESTS_DISABLED += test-misc test-signgam-main
+# disable long double tests, only for some architectures available
+TESTS_DISABLED += test-ldouble test-ldouble-finite test-ildoubl compile_test c99_test
+# disable tgmath tests, not implemented
+TESTS_DISABLED += test-tgmath test-tgmath2 test-tgmath-int test-tgmath-ret
+
+CFLAGS_test-signgam-finite = -ffinite-math-only
+CFLAGS_test-signgam-finite-c99 = -ffinite-math-only -std=c99
+CFLAGS_test-signgam-finite-c11 = -ffinite-math-only -std=c11
+CFLAGS_test-signgam-uchar = -std=c99
+CFLAGS_test-signgam-uchar-init = -std=c99
+CFLAGS_test-signgam-uchar-static = -std=c99
+CFLAGS_test-signgam-uchar-init-static = -std=c99
+CFLAGS_test-signgam-uint = -std=c99
+CFLAGS_test-signgam-uint-init = -std=c99
+CFLAGS_test-signgam-uint-static = -std=c99
+CFLAGS_test-signgam-uint-init-static = -std=c99
+CFLAGS_test-signgam-ullong = -std=c99
+CFLAGS_test-signgam-ullong-init = -std=c99
+CFLAGS_test-signgam-ullong-static = -std=c99
+CFLAGS_test-signgam-ullong-init-static = -std=c99
# NOTE: For basic-test we must disable the floating point optimization.
# Only for sh architecture because in the other architecture are disabled.
ifeq ($(TARGET_ARCH),sh)
CFLAGS_basic-test += -mieee
endif
-EXTRA_CFLAGS := -fno-builtin
+EXTRA_CFLAGS := -fno-builtin -DNO_LONG_DOUBLE
EXTRA_LDFLAGS := -lm
PERL := perl
@@ -28,13 +42,10 @@ MDEPS := $(wildcard test-*.c)
$(MDEPS): libm-test.c
ULP_SUFFIX :=
-ifeq ($(TARGET_ARCH),mips)
-ULP_SUFFIX:=$(if $(CONFIG_MIPS_N64_ABI),64,32)
-endif
-
TARGET_ULP := $(if $(wildcard libm-test-ulps-$(TARGET_ARCH)$(ULP_SUFFIX)),$(TARGET_ARCH)$(ULP_SUFFIX),generic)
libm-test.c: libm-test-ulps-$(TARGET_ULP) libm-test.inc gen-libm-test.pl
$(Q)$(PERL) ./gen-libm-test.pl -u libm-test-ulps-$(TARGET_ULP) ./libm-test.inc -o "." 2>&1 > /dev/null
+ $(Q)$(SHELL) ./gen-libm-have-vector-test.sh > libm-have-vector-test.h
-EXTRA_CLEAN := libm-test.c libm-test-ulps.h
+EXTRA_CLEAN := libm-test.c libm-test-ulps.h libm-have-vector-test.h
diff --git a/test/math/auto-libm-test-in b/test/math/auto-libm-test-in
new file mode 100644
index 0000000..ffcc40a
--- /dev/null
+++ b/test/math/auto-libm-test-in
@@ -0,0 +1,4796 @@
+# libm test inputs for gen-auto-libm-tests.c.
+# Copyright (C) 1997-2016 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/>. */
+
+acos 0
+acos -0
+acos 1
+acos -1
+acos 0.5
+acos -0.5
+acos 0.75
+acos 2e-17
+acos 0.0625
+acos 0x0.ffffffp0
+acos -0x0.ffffffp0
+acos 0x0.ffffffff8p0
+acos -0x0.ffffffff8p0
+acos 0x0.ffffffffffffp0
+acos -0x0.ffffffffffffp0
+acos 0x0.fffffffffffff8p0
+acos -0x0.fffffffffffff8p0
+acos 0x0.ffffffffffffffffp0
+acos -0x0.ffffffffffffffffp0
+acos 0x0.ffffffffffffffffffffffffffcp0
+acos -0x0.ffffffffffffffffffffffffffcp0
+acos 0x0.ffffffffffffffffffffffffffff8p0
+acos -0x0.ffffffffffffffffffffffffffff8p0
+acos 0x1p-5
+acos 0x1p-10
+acos 0x1p-15
+acos 0x1p-20
+acos 0x1p-25
+acos 0x1p-30
+acos 0x1p-35
+acos 0x1p-40
+acos 0x1p-45
+acos 0x1p-50
+acos 0x1p-55
+acos 0x1p-60
+acos 0x1p-65
+acos 0x1p-70
+acos 0x1p-75
+acos 0x1p-80
+acos 0x1p-85
+acos 0x1p-90
+acos 0x1p-95
+acos 0x1p-100
+acos 0x1p-105
+acos 0x1p-110
+acos 0x1p-115
+acos 0x1p-120
+acos -0x1p-5
+acos -0x1p-25
+acos -0x1p-45
+acos -0x1p-65
+acos -0x1p-85
+acos -0x1p-105
+acos -0x1p-125
+acos -0x2.0089a4p-4
+acos 0xf.04aeep-4
+acos 0x5.dd258006121b8p-4
+acos -0x2.35f051e70dbc4p-4
+acos 0xe.9a5c0d7fabb9aa1p-4
+acos 0xe.17513589de79b75p-4
+acos 0x3.e57821d368ebap-4
+acos 0x2.0bee8p-4
+acos -0x1.da00d8p-4
+acos min
+acos -min
+acos min_subnorm
+acos -min_subnorm
+
+acosh 1
+acosh 0x1.000002p0
+acosh 0x1.0000000000001p0 no-test-inline
+acosh 0x1.0000000000000002p0 no-test-inline
+acosh 0x1.000000000000000000000000008p0 no-test-inline
+acosh 0x1.0000000000000000000000000001p0 no-test-inline
+acosh 1.625
+acosh 7
+acosh 100
+acosh 1e5
+acosh 0x1p8
+acosh 0x1p9
+acosh 0x1p10
+acosh 0x1p11
+acosh 0x1p12
+acosh 0x1p13
+acosh 0x1p24
+acosh 0x1p25
+acosh 0x1p26
+acosh 0x1p27
+acosh 0x1p28
+acosh 0x1p29
+acosh 0x1p30
+acosh 0x1p31
+acosh 0x1p32
+acosh 0x1p33
+acosh 0x1p48
+acosh 0x1p49
+acosh 0x1p50
+acosh 0x1p51
+acosh 0x1p52
+acosh 0x1p53
+acosh 0x1p54
+acosh 0x1p55
+acosh 0x1p56
+acosh 0x1p57
+acosh 0x1p58
+acosh 0x1p59
+acosh 0x1p100
+acosh 0x1p500
+acosh 0x1p5000
+acosh 0x1.80a368p+0
+acosh 0x1.0b9d3e9fc19fbp+0
+acosh 0x1.11eab6p+0
+acosh 0x1.0fffaap+0
+acosh 0x1.068e0eca105a6p+0
+acosh 0x2.8d4288p+0
+acosh 0x1.5d71a6p+36
+acosh 0x1.476a3c43d7edep+288
+acosh 0xc.84cb1dbbd1b1p+0
+acosh 0x1.0722362c26ba5p+0
+acosh 0x1.73515p+0
+acosh 0x1.1b836p+0
+acosh 0x1.07c956p+0
+acosh 0x1.1808eep+0
+acosh 0x1.1052c4p+0
+acosh max no-test-inline
+
+asin 0
+asin -0
+asin 0.5
+asin -0.5
+asin 1.0
+asin -1.0
+asin 0.75
+asin 0x0.ffffffp0
+asin -0x0.ffffffp0
+asin 0x0.ffffffff8p0
+asin -0x0.ffffffff8p0
+asin 0x0.ffffffffffffp0
+asin -0x0.ffffffffffffp0
+asin 0x0.fffffffffffff8p0
+asin -0x0.fffffffffffff8p0
+asin 0x0.ffffffffffffffffp0
+asin -0x0.ffffffffffffffffp0
+asin 0x0.ffffffffffffffffffffffffffcp0
+asin -0x0.ffffffffffffffffffffffffffcp0
+asin 0x0.ffffffffffffffffffffffffffff8p0
+asin -0x0.ffffffffffffffffffffffffffff8p0
+asin 0x1p-5
+asin 0x1p-10
+asin 0x1p-15
+asin 0x1p-20
+asin 0x1p-25
+asin 0x1p-30
+asin 0x1p-35
+asin 0x1p-40
+asin 0x1p-45
+asin 0x1p-50
+asin 0x1p-55
+asin 0x1p-60
+asin 0x1p-100
+asin 0x1p-600
+asin 0x1p-10000
+asin -0x2.18915cp-4
+asin -0x3.746774p-4
+asin -0x3.1c54d10e5c844p-4
+asin 0xf.c9675fa6fe69f12p-4
+asin -0xa.fc5afp-4
+asin 0xd.805e5p-4
+asin -0x2.1a02dcp-4
+asin -0x8.1c120ac3e495p-4
+asin -0xb.36dacp-4
+asin min
+asin -min
+asin min_subnorm
+asin -min_subnorm
+
+asinh 0
+asinh -0
+asinh 0.75
+asinh 1
+asinh 10
+asinh 100
+asinh 1e6
+asinh 0x1p8
+asinh 0x1p9
+asinh 0x1p10
+asinh 0x1p11
+asinh 0x1p12
+asinh 0x1p13
+asinh 0x1p24
+asinh 0x1p25
+asinh 0x1p26
+asinh 0x1p27
+asinh 0x1p28
+asinh 0x1p29
+asinh 0x1p30
+asinh 0x1p31
+asinh 0x1p32
+asinh 0x1p33
+asinh 0x1p48
+asinh 0x1p49
+asinh 0x1p50
+asinh 0x1p51
+asinh 0x1p52
+asinh 0x1p53
+asinh 0x1p54
+asinh 0x1p55
+asinh 0x1p56
+asinh 0x1p57
+asinh 0x1p58
+asinh 0x1p59
+asinh 0x1p100
+asinh 0x1p500
+asinh 0x1p5000
+asinh 0x1p-8
+asinh 0x1p-9
+asinh 0x1p-10
+asinh 0x1p-11
+asinh 0x1p-12
+asinh 0x1p-13
+asinh 0x1p-24
+asinh 0x1p-25
+asinh 0x1p-26
+asinh 0x1p-27
+asinh 0x1p-28
+asinh 0x1p-29
+asinh 0x1p-30
+asinh 0x1p-31
+asinh 0x1p-32
+asinh 0x1p-33
+asinh 0x1p-48
+asinh 0x1p-49
+asinh 0x1p-50
+asinh 0x1p-51
+asinh 0x1p-52
+asinh 0x1p-53
+asinh 0x1p-54
+asinh 0x1p-55
+asinh 0x1p-56
+asinh 0x1p-57
+asinh 0x1p-58
+asinh 0x1p-59
+asinh 0x1p-100
+asinh -0x3.d26bb4p-4
+asinh -0x3.bdeef4p-4
+asinh -0x7.fc7fc8p-8
+asinh -0x3.b94a52e6913c2p-4
+asinh 0x7.d8e5a8p-4
+asinh -0x7.63a06320c42e4p-4
+asinh 0x6.f4a93p-4
+asinh -0x7.88bcc8p-4
+asinh -0x3.11c35p-4
+asinh -0x4.39534p-4
+asinh -0xd.d62e8p+92
+asinh -0x4.cfb9805a53a2065p-4
+asinh -0x5.cabae7a011e33d9p-4
+asinh -0x6.e26358p-4
+asinh 0x6.c92c08p-4
+asinh 0x1p-500
+asinh 0x1p-5000
+asinh min
+asinh -min
+asinh min_subnorm
+asinh -min_subnorm
+asinh max no-test-inline
+asinh -max no-test-inline
+
+atan 0
+atan -0
+atan max
+atan -max
+atan 1
+atan -1
+atan 0.75
+atan 0x1p-5
+atan 0x1p-10
+atan 0x1p-15
+atan 0x1p-20
+atan 0x1p-25
+atan 0x1p-30
+atan 0x1p-35
+atan 0x1p-40
+atan 0x1p-45
+atan 0x1p-50
+atan 0x1p-55
+atan 0x1p-60
+atan 2.5
+atan 10
+atan 1e6
+atan 0x1p31
+atan 0x1p-100
+atan 0x1p-600
+atan 0x1p-10000
+atan -0x3.b02d84p-4
+atan -0x3.3fb708p-4
+atan -0x2.3249ap+0
+atan -0x1.363f46p+0
+atan -0x1.ad4c0ap+0
+atan -0x3.eb8e18p+0
+atan 0x3.53c188p+0
+atan -0x1.58c83p+0
+atan min
+atan -min
+atan min_subnorm
+atan -min_subnorm
+
+# atan2 (0,x) == 0 for x > 0.
+atan2 0 1
+# atan2 (-0,x) == -0 for x > 0.
+atan2 -0 1
+atan2 0 0
+atan2 -0 0
+# atan2 (+0,x) == +pi for x < 0.
+atan2 0 -1
+# atan2 (-0,x) == -pi for x < 0.
+atan2 -0 -1
+atan2 0 -0
+atan2 -0 -0
+# atan2 (y,+0) == pi/2 for y > 0.
+atan2 1 0
+# atan2 (y,-0) == pi/2 for y > 0.
+atan2 1 -0
+# atan2 (y,+0) == -pi/2 for y < 0.
+atan2 -1 0
+# atan2 (y,-0) == -pi/2 for y < 0.
+atan2 -1 -0
+atan2 max max
+atan2 max -max
+atan2 -max max
+atan2 -max -max
+atan2 max min
+atan2 -max -min
+atan2 -max min
+atan2 max -min
+atan2 max min_subnorm
+atan2 -max -min_subnorm
+atan2 -max min_subnorm
+atan2 max -min_subnorm
+atan2 0.75 1
+atan2 -0.75 1.0
+atan2 0.75 -1.0
+atan2 -0.75 -1.0
+atan2 0.390625 .00029
+atan2 1.390625 0.9296875
+atan2 -0.00756827042671106339 -.001792735857538728036
+atan2 0x1.00000000000001p0 0x1.00000000000001p0
+atan2 0x4.c3841p-4 0x2.f2f308p+0
+atan2 -0xe.cf143p-40 0xd.3de7ap-36
+atan2 0x5.576cf8p-4 0x2.21e65p+0
+atan2 -0x4.29411p-4 0x1.f4755cp+0
+atan2 -0xa.b4101p+20 -0xf.9c4c8p-4
+atan2 0x4.251bb8p-4 0x7.40ac68p+0
+atan2 0x1.47239ep+68 0xa.3ac3cp+68
+atan2 -0x6.b0794p-4 0x3.8ff10cp+0
+atan2 -0x7.15e7af0a1780cp-724 0xf.fffffp+124
+atan2 0x3.f16f1p+0 -0x1.546056p+0
+atan2 -0x1.9e657cp-24 0x7.40bb4p-52
+atan2 min min
+atan2 min -min
+atan2 -min min
+atan2 -min -min
+atan2 min_subnorm min_subnorm
+atan2 min_subnorm -min_subnorm
+atan2 -min_subnorm min_subnorm
+atan2 -min_subnorm -min_subnorm
+atan2 min min_subnorm
+atan2 min -min_subnorm
+atan2 -min min_subnorm
+atan2 -min -min_subnorm
+atan2 min_subnorm min
+atan2 min_subnorm -min
+atan2 -min_subnorm min
+atan2 -min_subnorm -min
+atan2 1 -max
+atan2 -1 -max
+atan2 min -max
+atan2 -min -max
+atan2 min_subnorm -max
+atan2 -min_subnorm -max
+atan2 1 max
+atan2 -1 max
+atan2 min max
+atan2 -min max
+atan2 min_subnorm max
+atan2 -min_subnorm max
+atan2 min 1
+atan2 -min 1
+atan2 min_subnorm 1
+atan2 -min_subnorm 1
+atan2 min -1
+atan2 -min -1
+atan2 min_subnorm -1
+atan2 -min_subnorm -1
+
+atanh 0
+atanh -0
+atanh 0.75
+atanh -0.75
+atanh 0.25
+atanh 0x1p-5
+atanh 0x1p-10
+atanh 0x1.2345p-20
+atanh 0x1p-8
+atanh 0x1p-9
+atanh 0x1p-10
+atanh 0x1p-11
+atanh 0x1p-12
+atanh 0x1p-13
+atanh 0x1p-24
+atanh 0x1p-25
+atanh 0x1p-26
+atanh 0x1p-27
+atanh 0x1p-28
+atanh 0x1p-29
+atanh 0x1p-30
+atanh 0x1p-31
+atanh 0x1p-32
+atanh 0x1p-33
+atanh 0x1p-48
+atanh 0x1p-49
+atanh 0x1p-50
+atanh 0x1p-51
+atanh 0x1p-52
+atanh 0x1p-53
+atanh 0x1p-54
+atanh 0x1p-55
+atanh 0x1p-56
+atanh 0x1p-57
+atanh 0x1p-58
+atanh 0x1p-59
+atanh 0x1p-100
+atanh -0x1p-100
+atanh 0x1p-600
+atanh -0x1p-600
+atanh 0x1p-10000
+atanh -0x1p-10000
+atanh 0x0.ffffffp0 no-test-inline
+atanh -0x0.ffffffp0 no-test-inline
+atanh 0x0.ffffffff8p0 no-test-inline
+atanh -0x0.ffffffff8p0 no-test-inline
+atanh 0x0.ffffffffffffp0 no-test-inline
+atanh -0x0.ffffffffffffp0 no-test-inline
+atanh 0x0.fffffffffffff8p0 no-test-inline
+atanh -0x0.fffffffffffff8p0 no-test-inline
+atanh 0x0.ffffffffffffffffp0 no-test-inline
+atanh -0x0.ffffffffffffffffp0 n