Run libm tests separately for each function.

At present, libm tests for each function get built into a single
executable (for each floating point type, for each of normal / inline
/ finite-math-only functions, plus vector variants) and run together,
resulting in a single PASS or FAIL (for each of those nine variants
plus vector variants).  Building this executable involves reading
over 50 MB of libm-test-*.c sources.

This patch arranges for tests of each function to be run separately
from the makefiles instead.  There are 121 functions being tested for
each (type, variant pair) (actually 126, but run as 121 from the
Makefile because each of the pairs (exp10, pow10), (isfinite, finite),
(lgamma, gamma), (remainder, drem), (scalbn, ldexp), shares a table of
test results and so is run together), so 1089 separate tests run from
the Makefile, plus 48 vector tests on x86_64 (six functions for eight
vector variants).  Each test only involves a libm-test-<func>.c file
of no more than about 4 MB, rather than all such files taking about 50
MB.  With tests run separately, test summaries will indicate which
functions actually have problems (of course, those problems may just
be out-of-date libm-test-ulps files if the file hasn't been updated
for the architecture in question recently).

All the .c files for the 1089+48 tests are generated automatically
from the Makefiles.  Various checked-in boilerplate .c files are
removed as no longer needed.  CFLAGS definitions for the different
kinds of tests are generated using makefile iterators to apply
target-specific variable settings.  libm-have-vector-test.h is no
longer needed; the list of functions to test for each vector type is
now in the sysdeps Makefile.

This should reduce the amount of boilerplate needed for float128
testing support; test-float128.h will still be needed, but not various
.c files or Makefile CFLAGS definitions.  The logic for creating
dependencies on libm-test-support-*.o files should also render
<https://sourceware.org/ml/libc-alpha/2017-02/msg00279.html>
unnecessary.

Tested for x86_64 and x86.

	* math/Makefile (libm-tests-generated): Remove variable.
	(libm-tests-base-normal): New variable.
	(libm-tests-base-finite): Likewise.
	(libm-tests-base-inline): Likewise.
	(libm-tests-base): Likewise.
	(libm-tests-normal): Likewise.
	(libm-tests-finite): Likewise.
	(libm-tests-inline): Likewise.
	(libm-tests-vector): Likewise.
	(libm-tests): Define in terms of these new variables.
	(libm-tests-for-type): New variable.
	(libm-tests.o): Move definition.
	(tests): Move addition of $(libm-tests).
	(generated): Update for new and removed libm test files.
	($(objpfx)libm-test.c): Remove target.
	($(objpfx)libm-have-vector-test.h): Likewise.
	(CFLAGS-test-double-vlen2.c): Remove variable.
	(CFLAGS-test-double-vlen4.c): Likewise.
	(CFLAGS-test-double-vlen8.c): Likewise.
	(CFLAGS-test-float-vlen4.c): Likewise.
	(CFLAGS-test-float-vlen8.c): Likewise.
	(CFLAGS-test-float-vlen16.c): Likewise.
	(CFLAGS-test-float.c): Likewise.
	(CFLAGS-test-float-finite.c): Likewise.
	(CFLAGS-libm-test-support-float.c): Likewise.
	(CFLAGS-test-double.c): Likewise.
	(CFLAGS-test-double-finite.c): Likewise.
	(CFLAGS-libm-test-support-double.c): Likewise.
	(CFLAGS-test-ldouble.c): Likewise.
	(CFLAGS-test-ldouble-finite.c): Likewise.
	(CFLAGS-libm-test-support-ldouble.c): Likewise.
	(libm-test-inline-cflags): New variable.
	(CFLAGS-test-ifloat.c): Remove variable.
	(CFLAGS-test-idouble.c): Likewise.
	(CFLAGS-test-ildouble.c): Likewise.
	($(addprefix $(objpfx), $(libm-tests.o))): Move target and update
	dependencies.
	($(foreach t,$(libm-tests-normal),$(objpfx)$(t).c)): New rule.
	($(foreach t,$(libm-tests-finite),$(objpfx)$(t).c)): Likewise.
	($(foreach t,$(libm-tests-inline),$(objpfx)$(t).c)): Likewise.
	($(foreach t,$(libm-tests-vector),$(objpfx)$(t).c)): Likewise.
	($(foreach t,$(types),$(objpfx)libm-test-support-$(t).c)):
	Likewise.
	(dependencies on libm-test-support-*.o): Remove.
	($(foreach f,$(libm-test-funcs-all),$(objpfx)$(o)-$(f).o)): New
	rules using iterators.
	($(addprefix $(objpfx),$(call libm-tests-for-type,$(o)))):
	Likewise.
	($(objpfx)libm-test-support-$(o).o): Likewise.
	($(addprefix $(objpfx),$(filter-out $(tests-static)
	$(libm-vec-tests),$(tests)))): Filter out $(libm-tests-vector)
	instead.
	($(addprefix $(objpfx), $(libm-vec-tests))): Use iterator to
	define rule instead.
	* math/README.libm-test: Update.
	* math/libm-test-acos.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-acosh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-asin.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-asinh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-atan.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-atan2.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-atanh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cabs.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cacos.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cacosh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-canonicalize.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-carg.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-casin.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-casinh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-catan.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-catanh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cbrt.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ccos.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ccosh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ceil.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cexp.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cimag.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-clog.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-clog10.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-conj.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-copysign.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cos.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cosh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cpow.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-cproj.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-creal.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-csin.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-csinh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-csqrt.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ctan.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ctanh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-erf.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-erfc.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-exp.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-exp10.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-exp2.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-expm1.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fabs.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fdim.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-floor.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fma.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fmax.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fmaxmag.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fmin.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fminmag.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fmod.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fpclassify.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-frexp.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fromfp.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-fromfpx.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-getpayload.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-hypot.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ilogb.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-iscanonical.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-iseqsig.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isfinite.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isgreater.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isgreaterequal.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isinf.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isless.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-islessequal.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-islessgreater.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isnan.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isnormal.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-issignaling.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-issubnormal.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-isunordered.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-iszero.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-j0.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-j1.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-jn.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-lgamma.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-llogb.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-llrint.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-llround.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-log.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-log10.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-log1p.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-log2.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-logb.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-lrint.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-lround.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-modf.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-nearbyint.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-nextafter.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-nextdown.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-nexttoward.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-nextup.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-pow.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-remainder.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-remquo.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-rint.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-round.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-roundeven.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-scalb.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-scalbln.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-scalbn.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-setpayload.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-setpayloadsig.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-signbit.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-significand.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-sin.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-sincos.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-sinh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-sqrt.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-tan.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-tanh.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-tgamma.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-totalorder.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-totalordermag.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-trunc.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ufromfp.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-ufromfpx.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-y0.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-y1.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-yn.inc: Include libm-test-driver.c.
	(do_test): New function.
	* math/libm-test-driver.c: Do not include libm-have-vector-test.h.
	(HAVE_VECTOR): Remove macro.
	(START): Do not call HAVE_VECTOR.
	* math/test-double-vlen2.h (FUNC_TEST): Remove macro.
	* math/test-double-vlen4.h (FUNC_TEST): Remove macro.
	* math/test-double-vlen8.h (FUNC_TEST): Remove macro.
	* math/test-float-vlen16.h (FUNC_TEST): Remove macro.
	* math/test-float-vlen4.h (FUNC_TEST): Remove macro.
	* math/test-float-vlen8.h (FUNC_TEST): Remove macro.
	* math/test-math-vector.h (FUNC_TEST): New macro.
	(WRAPPER_DECL): Rename to WRAPPER_DECL_f.
	* sysdeps/x86_64/fpu/Makefile (double-vlen2-funcs): New variable.
	(double-vlen4-funcs): Likewise.
	(double-vlen4-avx2-funcs): Likewise.
	(double-vlen8-funcs): Likewise.
	(float-vlen4-funcs): Likewise.
	(float-vlen8-funcs): Likewise.
	(float-vlen8-avx2-funcs): Likewise.
	(float-vlen16-funcs): Likewise.
	(CFLAGS-test-double-vlen4-avx2.c): Remove variable.
	(CFLAGS-test-float-vlen8-avx2.c): Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen4.h (TEST_VECTOR_cos): Remove
	macro.
	(TEST_VECTOR_sin): Likewise.
	(TEST_VECTOR_sincos): Likewise.
	(TEST_VECTOR_log): Likewise.
	(TEST_VECTOR_exp): Likewise.
	(TEST_VECTOR_pow): Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen8.h (TEST_VECTOR_cos):
	Likewise.
	(TEST_VECTOR_sin): Likewise.
	(TEST_VECTOR_sincos): Likewise.
	(TEST_VECTOR_log): Likewise.
	(TEST_VECTOR_exp): Likewise.
	(TEST_VECTOR_pow): Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen16.h (TEST_VECTOR_cosf):
	Likewise.
	(TEST_VECTOR_sinf): Likewise.
	(TEST_VECTOR_sincosf): Likewise.
	(TEST_VECTOR_logf): Likewise.
	(TEST_VECTOR_expf): Likewise.
	(TEST_VECTOR_powf): Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen8.h (TEST_VECTOR_cosf):
	Likewise.
	(TEST_VECTOR_sinf): Likewise.
	(TEST_VECTOR_sincosf): Likewise.
	(TEST_VECTOR_logf): Likewise.
	(TEST_VECTOR_expf): Likewise.
	(TEST_VECTOR_powf): Likewise.
	* math/gen-libm-have-vector-test.sh: Remove file.
	* math/libm-test.inc: Likewise.
	* math/libm-test-support-double.c: Likewise.
	* math/libm-test-support-float.c: Likewise.
	* math/libm-test-support-ldouble.c: Likewise.
	* math/test-double-finite.c: Likewise.: Likewise.
	* math/test-double.c: Likewise.
	* math/test-float-finite.c: Likewise.
	* math/test-float.c: Likewise.
	* math/test-idouble.c: Likewise.
	* math/test-ifloat.c: Likewise.
	* math/test-ildouble.c: Likewise.
	* math/test-ldouble-finite.c: Likewise.
	* math/test-ldouble.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen2.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen2.h: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen4-avx2.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen8.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen16.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen4.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen4.h: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen8-avx2.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise.
This commit is contained in:
Joseph Myers 2017-02-24 00:51:45 +00:00
parent aec0821ce7
commit 92061bb033
161 changed files with 1512 additions and 973 deletions

373
ChangeLog
View File

@ -1,3 +1,376 @@
2017-02-24 Joseph Myers <joseph@codesourcery.com>
* math/Makefile (libm-tests-generated): Remove variable.
(libm-tests-base-normal): New variable.
(libm-tests-base-finite): Likewise.
(libm-tests-base-inline): Likewise.
(libm-tests-base): Likewise.
(libm-tests-normal): Likewise.
(libm-tests-finite): Likewise.
(libm-tests-inline): Likewise.
(libm-tests-vector): Likewise.
(libm-tests): Define in terms of these new variables.
(libm-tests-for-type): New variable.
(libm-tests.o): Move definition.
(tests): Move addition of $(libm-tests).
(generated): Update for new and removed libm test files.
($(objpfx)libm-test.c): Remove target.
($(objpfx)libm-have-vector-test.h): Likewise.
(CFLAGS-test-double-vlen2.c): Remove variable.
(CFLAGS-test-double-vlen4.c): Likewise.
(CFLAGS-test-double-vlen8.c): Likewise.
(CFLAGS-test-float-vlen4.c): Likewise.
(CFLAGS-test-float-vlen8.c): Likewise.
(CFLAGS-test-float-vlen16.c): Likewise.
(CFLAGS-test-float.c): Likewise.
(CFLAGS-test-float-finite.c): Likewise.
(CFLAGS-libm-test-support-float.c): Likewise.
(CFLAGS-test-double.c): Likewise.
(CFLAGS-test-double-finite.c): Likewise.
(CFLAGS-libm-test-support-double.c): Likewise.
(CFLAGS-test-ldouble.c): Likewise.
(CFLAGS-test-ldouble-finite.c): Likewise.
(CFLAGS-libm-test-support-ldouble.c): Likewise.
(libm-test-inline-cflags): New variable.
(CFLAGS-test-ifloat.c): Remove variable.
(CFLAGS-test-idouble.c): Likewise.
(CFLAGS-test-ildouble.c): Likewise.
($(addprefix $(objpfx), $(libm-tests.o))): Move target and update
dependencies.
($(foreach t,$(libm-tests-normal),$(objpfx)$(t).c)): New rule.
($(foreach t,$(libm-tests-finite),$(objpfx)$(t).c)): Likewise.
($(foreach t,$(libm-tests-inline),$(objpfx)$(t).c)): Likewise.
($(foreach t,$(libm-tests-vector),$(objpfx)$(t).c)): Likewise.
($(foreach t,$(types),$(objpfx)libm-test-support-$(t).c)):
Likewise.
(dependencies on libm-test-support-*.o): Remove.
($(foreach f,$(libm-test-funcs-all),$(objpfx)$(o)-$(f).o)): New
rules using iterators.
($(addprefix $(objpfx),$(call libm-tests-for-type,$(o)))):
Likewise.
($(objpfx)libm-test-support-$(o).o): Likewise.
($(addprefix $(objpfx),$(filter-out $(tests-static)
$(libm-vec-tests),$(tests)))): Filter out $(libm-tests-vector)
instead.
($(addprefix $(objpfx), $(libm-vec-tests))): Use iterator to
define rule instead.
* math/README.libm-test: Update.
* math/libm-test-acos.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-acosh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-asin.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-asinh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-atan.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-atan2.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-atanh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cabs.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cacos.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cacosh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-canonicalize.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-carg.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-casin.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-casinh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-catan.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-catanh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cbrt.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ccos.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ccosh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ceil.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cexp.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cimag.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-clog.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-clog10.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-conj.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-copysign.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cos.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cosh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cpow.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-cproj.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-creal.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-csin.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-csinh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-csqrt.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ctan.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ctanh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-erf.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-erfc.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-exp.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-exp10.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-exp2.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-expm1.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fabs.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fdim.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-floor.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fma.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fmax.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fmaxmag.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fmin.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fminmag.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fmod.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fpclassify.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-frexp.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fromfp.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-fromfpx.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-getpayload.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-hypot.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ilogb.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-iscanonical.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-iseqsig.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isfinite.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isgreater.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isgreaterequal.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isinf.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isless.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-islessequal.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-islessgreater.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isnan.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isnormal.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-issignaling.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-issubnormal.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-isunordered.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-iszero.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-j0.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-j1.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-jn.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-lgamma.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-llogb.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-llrint.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-llround.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-log.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-log10.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-log1p.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-log2.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-logb.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-lrint.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-lround.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-modf.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-nearbyint.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-nextafter.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-nextdown.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-nexttoward.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-nextup.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-pow.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-remainder.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-remquo.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-rint.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-round.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-roundeven.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-scalb.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-scalbln.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-scalbn.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-setpayload.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-setpayloadsig.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-signbit.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-significand.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-sin.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-sincos.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-sinh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-sqrt.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-tan.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-tanh.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-tgamma.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-totalorder.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-totalordermag.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-trunc.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ufromfp.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-ufromfpx.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-y0.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-y1.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-yn.inc: Include libm-test-driver.c.
(do_test): New function.
* math/libm-test-driver.c: Do not include libm-have-vector-test.h.
(HAVE_VECTOR): Remove macro.
(START): Do not call HAVE_VECTOR.
* math/test-double-vlen2.h (FUNC_TEST): Remove macro.
* math/test-double-vlen4.h (FUNC_TEST): Remove macro.
* math/test-double-vlen8.h (FUNC_TEST): Remove macro.
* math/test-float-vlen16.h (FUNC_TEST): Remove macro.
* math/test-float-vlen4.h (FUNC_TEST): Remove macro.
* math/test-float-vlen8.h (FUNC_TEST): Remove macro.
* math/test-math-vector.h (FUNC_TEST): New macro.
(WRAPPER_DECL): Rename to WRAPPER_DECL_f.
* sysdeps/x86_64/fpu/Makefile (double-vlen2-funcs): New variable.
(double-vlen4-funcs): Likewise.
(double-vlen4-avx2-funcs): Likewise.
(double-vlen8-funcs): Likewise.
(float-vlen4-funcs): Likewise.
(float-vlen8-funcs): Likewise.
(float-vlen8-avx2-funcs): Likewise.
(float-vlen16-funcs): Likewise.
(CFLAGS-test-double-vlen4-avx2.c): Remove variable.
(CFLAGS-test-float-vlen8-avx2.c): Likewise.
* sysdeps/x86_64/fpu/test-double-vlen4.h (TEST_VECTOR_cos): Remove
macro.
(TEST_VECTOR_sin): Likewise.
(TEST_VECTOR_sincos): Likewise.
(TEST_VECTOR_log): Likewise.
(TEST_VECTOR_exp): Likewise.
(TEST_VECTOR_pow): Likewise.
* sysdeps/x86_64/fpu/test-double-vlen8.h (TEST_VECTOR_cos):
Likewise.
(TEST_VECTOR_sin): Likewise.
(TEST_VECTOR_sincos): Likewise.
(TEST_VECTOR_log): Likewise.
(TEST_VECTOR_exp): Likewise.
(TEST_VECTOR_pow): Likewise.
* sysdeps/x86_64/fpu/test-float-vlen16.h (TEST_VECTOR_cosf):
Likewise.
(TEST_VECTOR_sinf): Likewise.
(TEST_VECTOR_sincosf): Likewise.
(TEST_VECTOR_logf): Likewise.
(TEST_VECTOR_expf): Likewise.
(TEST_VECTOR_powf): Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8.h (TEST_VECTOR_cosf):
Likewise.
(TEST_VECTOR_sinf): Likewise.
(TEST_VECTOR_sincosf): Likewise.
(TEST_VECTOR_logf): Likewise.
(TEST_VECTOR_expf): Likewise.
(TEST_VECTOR_powf): Likewise.
* math/gen-libm-have-vector-test.sh: Remove file.
* math/libm-test.inc: Likewise.
* math/libm-test-support-double.c: Likewise.
* math/libm-test-support-float.c: Likewise.
* math/libm-test-support-ldouble.c: Likewise.
* math/test-double-finite.c: Likewise.: Likewise.
* math/test-double.c: Likewise.
* math/test-float-finite.c: Likewise.
* math/test-float.c: Likewise.
* math/test-idouble.c: Likewise.
* math/test-ifloat.c: Likewise.
* math/test-ildouble.c: Likewise.
* math/test-ldouble-finite.c: Likewise.
* math/test-ldouble.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen2.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen2.h: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen4-avx2.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen8.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen16.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen4.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen4.h: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8-avx2.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise.
2017-02-23 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
Paul E. Murphy <murphyp@linux.vnet.ibm.com>

View File

@ -196,13 +196,6 @@ endif
ifneq (no,$(PERL))
libm-vec-tests = $(addprefix test-,$(libmvec-tests))
libm-tests = $(foreach t,$(types),test-$(t) test-$(t)-finite test-i$(t)) \
$(libm-vec-tests)
libm-tests.o = $(addsuffix .o,$(libm-tests))
tests += $(libm-tests)
libm-test-support = $(foreach t,$(types),libm-test-support-$(t))
test-extras += $(libm-test-support)
extra-test-objs += $(addsuffix .o, $(libm-test-support))
@ -237,15 +230,42 @@ libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
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)
libm-tests-generated = libm-test-ulps.h libm-have-vector-test.h libm-test.c \
$(libm-test-c-auto) $(libm-test-c-noauto)
generated += $(libm-tests-generated)
generated += libm-test-ulps.h $(libm-test-c-auto) $(libm-test-c-noauto)
libm-tests-base-normal = $(foreach t,$(types),test-$(t))
libm-tests-base-finite = $(foreach t,$(types),test-$(t)-finite)
libm-tests-base-inline = $(foreach t,$(types),test-i$(t))
libm-tests-base = $(libm-tests-base-normal) $(libm-tests-base-finite) \
$(libm-tests-base-inline) $(libm-vec-tests)
libm-tests-normal = $(foreach t,$(libm-tests-base-normal),\
$(foreach f,$(libm-test-funcs-all),\
$(t)-$(f)))
libm-tests-finite = $(foreach t,$(libm-tests-base-finite),\
$(foreach f,$(libm-test-funcs-all),\
$(t)-$(f)))
libm-tests-inline = $(foreach t,$(libm-tests-base-inline),\
$(foreach f,$(libm-test-funcs-all),\
$(t)-$(f)))
libm-tests-vector = $(foreach t,$(libmvec-tests),\
$(foreach f,$($(t)-funcs),test-$(t)-$(f)))
libm-tests = $(libm-tests-normal) $(libm-tests-finite) $(libm-tests-inline) \
$(libm-tests-vector)
libm-tests-for-type = $(foreach f,$(libm-test-funcs-all),\
test-$(1)-$(f) test-$(1)-finite-$(f) \
test-i$(1)-$(f)) \
$(filter test-$(1)-%,$(libm-tests-vector))
libm-tests.o = $(addsuffix .o,$(libm-tests))
tests += $(libm-tests)
generated += $(addsuffix .c,$(libm-tests)) \
$(foreach t,$(types),libm-test-support-$(t).c)
libm-test-c-auto-obj = $(addprefix $(objpfx),$(libm-test-c-auto))
libm-test-c-noauto-obj = $(addprefix $(objpfx),$(libm-test-c-noauto))
$(objpfx)libm-test.c $(libm-test-c-noauto-obj): $(objpfx)libm-test%.c: \
libm-test%.inc gen-libm-test.pl
$(libm-test-c-noauto-obj): $(objpfx)libm-test%.c: libm-test%.inc \
gen-libm-test.pl
$(make-target-directory)
$(PERL) gen-libm-test.pl -c $< -a /dev/null -C $@
@ -256,30 +276,18 @@ $(libm-test-c-auto-obj): $(objpfx)libm-test%.c: libm-test%.inc \
$(PERL) gen-libm-test.pl -c $< -a auto-libm-test-out$* -C $@
libm-test-incs = $(foreach f,$(libm-test-funcs-all),libm-test-$(f).inc)
$(objpfx)libm-have-vector-test.h: $(libm-test-incs) gen-libm-have-vector-test.sh
$(make-target-directory)
$(SHELL) gen-libm-have-vector-test.sh $(sort $(libm-test-incs)) > $@
endif
libm-test-fast-math-cflags = -fno-builtin -D__FAST_MATH__ -DTEST_FAST_MATH
libm-test-vec-cflags = $(libm-test-fast-math-cflags) -fno-inline \
-ffloat-store -D_OPENMP=201307 -Wno-unknown-pragmas
CFLAGS-test-double-vlen2.c = $(libm-test-vec-cflags)
CFLAGS-test-double-vlen4.c = $(libm-test-vec-cflags)
CFLAGS-test-double-vlen4-wrappers.c = $(double-vlen4-arch-ext-cflags)
CFLAGS-test-double-vlen8.c = $(libm-test-vec-cflags)
CFLAGS-test-double-vlen8-wrappers.c = $(double-vlen8-arch-ext-cflags)
CFLAGS-test-float-vlen4.c = $(libm-test-vec-cflags)
CFLAGS-test-float-vlen8.c = $(libm-test-vec-cflags)
CFLAGS-test-float-vlen8-wrappers.c = $(float-vlen8-arch-ext-cflags)
CFLAGS-test-float-vlen16.c = $(libm-test-vec-cflags)
CFLAGS-test-float-vlen16-wrappers.c = $(float-vlen16-arch-ext-cflags)
# The no-inline tests use -fsignaling-nans, and thereby use the
@ -292,15 +300,7 @@ libm-test-no-inline-cflags = -fno-inline -ffloat-store -fno-builtin \
-fsignaling-nans
libm-test-finite-cflags = $(libm-test-no-inline-cflags) \
-U__FINITE_MATH_ONLY__ -D__FINITE_MATH_ONLY__=1
CFLAGS-test-float.c = $(libm-test-no-inline-cflags)
CFLAGS-test-float-finite.c = $(libm-test-finite-cflags)
CFLAGS-libm-test-support-float.c = $(libm-test-no-inline-cflags)
CFLAGS-test-double.c = $(libm-test-no-inline-cflags)
CFLAGS-test-double-finite.c = $(libm-test-finite-cflags)
CFLAGS-libm-test-support-double.c = $(libm-test-no-inline-cflags)
CFLAGS-test-ldouble.c = $(libm-test-no-inline-cflags)
CFLAGS-test-ldouble-finite.c = $(libm-test-finite-cflags)
CFLAGS-libm-test-support-ldouble.c = $(libm-test-no-inline-cflags)
libm-test-inline-cflags = $(libm-test-fast-math-cflags)
CFLAGS-test-tgmath.c = -fno-builtin
# The following testcase uses very long lines (>3 million), so it may take a
# while to compile it. See: http://llvm.org/bugs/show_bug.cgi?id=14106 and
@ -310,9 +310,6 @@ CFLAGS-test-tgmath-ret.c = -fno-builtin
CFLAGS-test-powl.c = -fno-builtin
CFLAGS-test-snan.c = -fsignaling-nans
CFLAGS-test-ifloat.c = $(libm-test-fast-math-cflags)
CFLAGS-test-idouble.c = $(libm-test-fast-math-cflags)
CFLAGS-test-ildouble.c = $(libm-test-fast-math-cflags)
CFLAGS-test-signgam-finite.c = -ffinite-math-only
CFLAGS-test-signgam-finite-c99.c = -ffinite-math-only -std=c99
@ -375,20 +372,111 @@ $(foreach t, $(call type-foreach, $(gen-all-calls)), \
ifneq (no,$(PERL))
# This must come after the inclusion of sysdeps Makefiles via Rules.
$(addprefix $(objpfx), $(libm-tests.o)): $(addprefix $(objpfx),\
$(libm-tests-generated))
$(addprefix $(objpfx),\
$(filter test-float% test-ifloat%,\
$(libm-tests))): $(objpfx)libm-test-support-float.o
$(foreach t,$(libm-tests-normal),$(objpfx)$(t).c): $(objpfx)test-%.c:
type_func=$*; \
type=$${type_func%%-*}; \
func=$${type_func#*-}; \
( \
echo "#include <test-$$type.h>"; \
echo "#include <test-math-no-finite.h>"; \
echo "#include <test-math-no-inline.h>"; \
echo "#include <test-math-errno.h>"; \
echo "#include <test-math-scalar.h>"; \
echo "#include <libm-test-$$func.c>"; \
) > $@
$(addprefix $(objpfx),\
$(filter test-double% test-idouble%,\
$(libm-tests))): $(objpfx)libm-test-support-double.o
$(foreach t,$(libm-tests-finite),$(objpfx)$(t).c): $(objpfx)test-%.c:
type_func=$*; \
type=$${type_func%%-*}; \
func=$${type_func#*-finite-}; \
( \
echo "#include <test-$$type.h>"; \
echo "#include <test-math-finite.h>"; \
echo "#include <test-math-no-inline.h>"; \
echo "#include <test-math-scalar.h>"; \
echo "#include <libm-test-$$func.c>"; \
) > $@
$(foreach t,$(libm-tests-inline),$(objpfx)$(t).c): $(objpfx)test-i%.c:
type_func=$*; \
type=$${type_func%%-*}; \
func=$${type_func#*-}; \
( \
echo "#include <test-$$type.h>"; \
echo "#include <test-math-inline.h>"; \
echo "#include <test-math-scalar.h>"; \
echo "#include <libm-test-$$func.c>"; \
) > $@
$(foreach t,$(libm-tests-vector),$(objpfx)$(t).c): $(objpfx)test-%.c:
type_func=$*; \
type=$${type_func%-*}; \
func=$${type_func##*-}; \
func_args=$$(grep ALL_RM_TEST libm-test-$$func.inc \
| sed 's/.*RUN_TEST_LOOP_//;s/_.*//'); \
( \
echo "#include <test-$$type.h>"; \
echo "WRAPPER_DECL_$$func_args (WRAPPER_NAME (FUNC ($$func)))"; \
echo "#include <libm-test-$$func.c>"; \
) > $@
$(foreach t,$(types),\
$(objpfx)libm-test-support-$(t).c): $(objpfx)libm-test-support-%.c:
( \
echo "#include <test-$*.h>"; \
echo "#include <libm-test-support.c>"; \
) > $@
$(addprefix $(objpfx), $(libm-tests.o)): $(objpfx)libm-test-ulps.h
define o-iterator-doit
$(foreach f,$(libm-test-funcs-all),\
$(objpfx)$(o)-$(f).o): $(objpfx)$(o)%.o: $(objpfx)libm-test%.c
endef
object-suffixes-left := $(libm-tests-base)
include $(o-iterator)
define o-iterator-doit
$(foreach f,$(libm-test-funcs-all),\
$(objpfx)$(o)-$(f).o): CFLAGS += $(libm-test-no-inline-cflags)
endef
object-suffixes-left := $(libm-tests-base-normal)
include $(o-iterator)
define o-iterator-doit
$(foreach f,$(libm-test-funcs-all),\
$(objpfx)$(o)-$(f).o): CFLAGS += $(libm-test-finite-cflags)
endef
object-suffixes-left := $(libm-tests-base-finite)
include $(o-iterator)
define o-iterator-doit
$(foreach f,$(libm-test-funcs-all),\
$(objpfx)$(o)-$(f).o): CFLAGS += $(libm-test-inline-cflags)
endef
object-suffixes-left := $(libm-tests-base-inline)
include $(o-iterator)
define o-iterator-doit
$(foreach f,$($(o)-funcs),\
$(objpfx)test-$(o)-$(f).o): CFLAGS += $(libm-test-vec-cflags)
endef
object-suffixes-left := $(libmvec-tests)
include $(o-iterator)
define o-iterator-doit
$(addprefix $(objpfx),\
$(filter test-ldouble% test-ildouble%,\
$(libm-tests))): $(objpfx)libm-test-support-ldouble.o
$(call libm-tests-for-type,$(o))): $(objpfx)libm-test-support-$(o).o
endef
object-suffixes-left := $(types)
include $(o-iterator)
define o-iterator-doit
$(objpfx)libm-test-support-$(o).o: CFLAGS += $(libm-test-no-inline-cflags)
endef
object-suffixes-left := $(types)
include $(o-iterator)
# Run the math programs to automatically generate ULPs files.
.PHONY: regen-ulps
@ -465,10 +553,16 @@ $(objpfx)libieee.a: $(objpfx)ieee-math.o
$(LN_S) $(<F) $(@F)
$(addprefix $(objpfx),\
$(filter-out $(tests-static) $(libm-vec-tests),$(tests))): $(libm)
$(filter-out $(tests-static) $(libm-tests-vector),\
$(tests))): $(libm)
$(addprefix $(objpfx),$(tests-static)): $(objpfx)libm.a
$(addprefix $(objpfx), $(libm-vec-tests)): $(objpfx)%: $(objpfx)%-wrappers.o \
$(libm) $(libmvec)
define o-iterator-doit
$(foreach f,$($(o)-funcs),\
$(objpfx)test-$(o)-$(f)): $(objpfx)test-$(o)-wrappers.o \
$(libm) $(libmvec)
endef
object-suffixes-left := $(libmvec-tests)
include $(o-iterator)
gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\
add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \

View File

@ -33,17 +33,18 @@ processing are "libm-test-<func>.c" and a file "libm-test-ulps.h" with
platform specific deltas by which the actual math function results may
deviate from the expected results and still be considered correct.
The test drivers "test-double.c", "test-float.c", and "test-ldouble.c"
test the normal double, float and long double implementation of libm.
The test drivers with an 'i' in their name ("test-idouble.c",
"test-ifloat.c", and "test-ildoubl.c") test the corresponding inline
functions (where available - otherwise they also test the real
functions in libm). Each driver selects the desired real floating
type to exercise the math functions to test with (float, double, or
long double) by defining a small set of macros just before including
the generic "libm-test.c" file. Each driver also either defines or
undefines the __NO_MATH_INLINES macro just before including
"libm-test.c" to select either the real or inline functions,
The test drivers "test-double-<func>.c", "test-float-<func>.c", and
"test-ldouble-<func>.c", generated by the Makefile, test the normal
double, float and long double implementation of libm. The test
drivers with an 'i' in their name ("test-idouble-<func>.c",
"test-ifloat-<func>.c", and "test-ildoubl-<func>.c") test the
corresponding inline functions (where available - otherwise they also
test the real functions in libm). Each driver selects the desired
real floating type to exercise the math functions to test with (float,
double, or long double) by defining a small set of macros just before
including the generic "libm-test.c" file. Each driver also either
defines or undefines the __NO_MATH_INLINES macro just before including
"libm-test-<func>.c" to select either the real or inline functions,
respectively. Each driver is compiled into a single executable test
program with the corresponding name.

View File

@ -1,52 +0,0 @@
#!/bin/sh
# Copyright (C) 2014-2017 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/>.
# Generate series of definitions used for vector math functions tests.
# TEST_VECTOR_* and WRAPPER_NAME are defined in vector math functions tests.
# *_VEC_SUFF is used in individual tests, as result of FUNC_TEST unfolding
# to avoid warnings / errors about undeclared functions.
print_defs()
{
echo "#if defined TEST_VECTOR_$1 && TEST_VECTOR_$1"
echo "# define HAVE_VECTOR_$1 1"
echo "# define ${1}_VEC_SUFF WRAPPER_NAME ($1)"
echo "WRAPPER_DECL$2 (WRAPPER_NAME ($1))"
echo "#else"
echo "# define HAVE_VECTOR_$1 0"
echo "# define ${1}_VEC_SUFF $1"
echo "#endif"
echo
}
for func in $(cat $@ | grep ALL_RM_TEST | grep -v define | grep -v RUN_TEST_LOOP_ff_f | grep -v RUN_TEST_LOOP_fFF_11 | sed -r "s/.*\(//; s/,.*//" ); do
print_defs ${func}
print_defs ${func}f
print_defs ${func}l
done
for func in $(cat $@ | grep ALL_RM_TEST | grep RUN_TEST_LOOP_ff_f | sed -r "s/.*\(//; s/,.*//" ); do
print_defs ${func} "_ff"
print_defs ${func}f "_ff"
print_defs ${func}l "_ff"
done
for func in $(cat $@ | grep ALL_RM_TEST | grep RUN_TEST_LOOP_fFF_11 | sed -r "s/.*\(//; s/,.*//" ); do
print_defs ${func} "_fFF"
print_defs ${func}f "_fFF"
print_defs ${func}l "_fFF"
done

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data acos_test_data[] =
{
TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
@ -40,6 +42,12 @@ acos_test (void)
ALL_RM_TEST (acos, 0, acos_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
acos_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data acosh_test_data[] =
{
TEST_f_f (acosh, plus_infty, plus_infty, ERRNO_UNCHANGED),
@ -45,6 +47,12 @@ acosh_test (void)
ALL_RM_TEST (acosh, 0, acosh_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
acosh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data asin_test_data[] =
{
TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
@ -40,6 +42,12 @@ asin_test (void)
ALL_RM_TEST (asin, 0, asin_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
asin_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data asinh_test_data[] =
{
TEST_f_f (asinh, plus_infty, plus_infty, ERRNO_UNCHANGED|NO_TEST_INLINE),
@ -33,6 +35,12 @@ asinh_test (void)
ALL_RM_TEST (asinh, 0, asinh_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
asinh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data atan_test_data[] =
{
TEST_f_f (atan, plus_infty, lit_pi_2_d, ERRNO_UNCHANGED),
@ -34,6 +36,12 @@ atan_test (void)
ALL_RM_TEST (atan, 0, atan_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
atan_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data atan2_test_data[] =
{
/* atan2 (y,inf) == +0 for finite y > 0 or +0. */
@ -196,6 +198,12 @@ atan2_test (void)
ALL_RM_TEST (atan2, 0, atan2_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
atan2_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data atanh_test_data[] =
{
TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@ -42,6 +44,12 @@ atanh_test (void)
ALL_RM_TEST (atanh, 0, atanh_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
atanh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_f_data cabs_test_data[] =
{
/* cabs (x + iy) is specified as hypot (x,y) */
@ -39,6 +41,12 @@ cabs_test (void)
ALL_RM_TEST (cabs, 0, cabs_test_data, RUN_TEST_LOOP_c_f, END);
}
static void
do_test (void)
{
cabs_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data cacos_test_data[] =
{
TEST_c_c (cacos, minus_infty, plus_infty, lit_pi_3_m_4_d, minus_infty),
@ -67,6 +69,12 @@ cacos_test (void)
ALL_RM_TEST (cacos, 0, cacos_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
cacos_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data cacosh_test_data[] =
{
TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, lit_pi_3_m_4_d),
@ -67,6 +69,12 @@ cacosh_test (void)
ALL_RM_TEST (cacosh, 0, cacosh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
cacosh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_Ff_b1_data canonicalize_test_data[] =
{
TEST_Ffp_b1 (canonicalize, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -80,6 +82,12 @@ canonicalize_test (void)
ALL_RM_TEST (canonicalize, 1, canonicalize_test_data, RUN_TEST_LOOP_Ffp_b1, END, x);
}
static void
do_test (void)
{
canonicalize_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_f_data carg_test_data[] =
{
/* carg (x + iy) is specified as atan2 (y, x) */
@ -57,6 +59,12 @@ carg_test (void)
ALL_RM_TEST (carg, 0, carg_test_data, RUN_TEST_LOOP_c_f, END);
}
static void
do_test (void)
{
carg_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data casin_test_data[] =
{
TEST_c_c (casin, plus_infty, plus_infty, lit_pi_4_d, plus_infty),
@ -68,6 +70,12 @@ casin_test (void)
ALL_RM_TEST (casin, 0, casin_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
casin_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data casinh_test_data[] =
{
TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, lit_pi_4_d),
@ -68,6 +70,12 @@ casinh_test (void)
ALL_RM_TEST (casinh, 0, casinh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
casinh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data catan_test_data[] =
{
TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
@ -77,6 +79,12 @@ catan_test (void)
ALL_RM_TEST (catan, 0, catan_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
catan_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data catanh_test_data[] =
{
TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
@ -76,6 +78,12 @@ catanh_test (void)
ALL_RM_TEST (catanh, 0, catanh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
catanh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data cbrt_test_data[] =
{
TEST_f_f (cbrt, plus_infty, plus_infty, ERRNO_UNCHANGED),
@ -34,6 +36,12 @@ cbrt_test (void)
ALL_RM_TEST (cbrt, 0, cbrt_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
cbrt_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data ccos_test_data[] =
{
TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
@ -72,6 +74,12 @@ ccos_test (void)
ALL_RM_TEST (ccos, 0, ccos_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
ccos_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data ccosh_test_data[] =
{
TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
@ -72,6 +74,12 @@ ccosh_test (void)
ALL_RM_TEST (ccosh, 0, ccosh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
ccosh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data ceil_test_data[] =
{
TEST_f_f (ceil, 0.0, 0.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -162,6 +164,12 @@ ceil_test (void)
ALL_RM_TEST (ceil, 1, ceil_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
ceil_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data cexp_test_data[] =
{
TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
@ -69,6 +71,12 @@ cexp_test (void)
ALL_RM_TEST (cexp, 0, cexp_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
cexp_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_f_data cimag_test_data[] =
{
TEST_c_f (cimag, 1.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
@ -37,6 +39,12 @@ cimag_test (void)
ALL_RM_TEST (cimag, 1, cimag_test_data, RUN_TEST_LOOP_c_f, END);
}
static void
do_test (void)
{
cimag_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data clog_test_data[] =
{
TEST_c_c (clog, minus_zero, 0, minus_infty, lit_pi, DIVIDE_BY_ZERO_EXCEPTION),
@ -76,6 +78,12 @@ clog_test (void)
ALL_RM_TEST (clog, 0, clog_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
clog_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data clog10_test_data[] =
{
TEST_c_c (clog10, minus_zero, 0, minus_infty, lit_pi_ln10_d, DIVIDE_BY_ZERO_EXCEPTION),
@ -75,6 +77,12 @@ clog10_test (void)
ALL_RM_TEST (clog10, 0, clog10_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
clog10_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data conj_test_data[] =
{
TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
@ -36,6 +38,12 @@ conj_test (void)
ALL_RM_TEST (conj, 1, conj_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
conj_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data copysign_test_data[] =
{
TEST_ff_f (copysign, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -105,6 +107,12 @@ copysign_test (void)
ALL_RM_TEST (copysign, 1, copysign_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
copysign_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data cos_test_data[] =
{
TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
@ -34,6 +36,12 @@ cos_test (void)
ALL_RM_TEST (cos, 0, cos_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
cos_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data cosh_test_data[] =
{
TEST_f_f (cosh, plus_infty, plus_infty, ERRNO_UNCHANGED|NO_TEST_INLINE),
@ -34,6 +36,12 @@ cosh_test (void)
ALL_RM_TEST (cosh, 0, cosh_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
cosh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_cc_c_data cpow_test_data[] =
{
TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value),
@ -29,6 +31,12 @@ cpow_test (void)
ALL_RM_TEST (cpow, 0, cpow_test_data, RUN_TEST_LOOP_cc_c, END_COMPLEX);
}
static void
do_test (void)
{
cpow_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data cproj_test_data[] =
{
TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
@ -80,6 +82,12 @@ cproj_test (void)
ALL_RM_TEST (cproj, 1, cproj_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
cproj_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_f_data creal_test_data[] =
{
TEST_c_f (creal, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
@ -37,6 +39,12 @@ creal_test (void)
ALL_RM_TEST (creal, 1, creal_test_data, RUN_TEST_LOOP_c_f, END);
}
static void
do_test (void)
{
creal_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data csin_test_data[] =
{
TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
@ -72,6 +74,12 @@ csin_test (void)
ALL_RM_TEST (csin, 0, csin_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
csin_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data csinh_test_data[] =
{
TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
@ -72,6 +74,12 @@ csinh_test (void)
ALL_RM_TEST (csinh, 0, csinh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
csinh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data csqrt_test_data[] =
{
TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
@ -66,6 +68,12 @@ csqrt_test (void)
ALL_RM_TEST (csqrt, 0, csqrt_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
csqrt_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data ctan_test_data[] =
{
TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
@ -126,6 +128,12 @@ ctan_test (void)
ALL_RM_TEST (ctan, 0, ctan_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
ctan_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_c_c_data ctanh_test_data[] =
{
TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
@ -125,6 +127,12 @@ ctanh_test (void)
ALL_RM_TEST (ctanh, 0, ctanh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX);
}
static void
do_test (void)
{
ctanh_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -952,15 +952,9 @@ struct test_Ff_b1_data
#define STR_CONCAT(a, b, c) __STRING (a##b##c)
#define STR_CON3(a, b, c) STR_CONCAT (a, b, c)
/* This generated header defines series of macros started with HAVE_VECTOR_. */
#include "libm-have-vector-test.h"
#define HAVE_VECTOR(func) __CONCAT (HAVE_VECTOR_, func)
/* Start and end the tests for a given function. */
#define START(FUN, SUFF, EXACT) \
CHECK_ARCH_EXT; \
if (TEST_MATHVEC && !HAVE_VECTOR (FUNC (FUN))) return; \
const char *this_func = STR_CON3 (FUN, SUFF, VEC_SUFF); \
init_max_error (this_func, EXACT)
#define END \

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data erf_test_data[] =
{
TEST_f_f (erf, plus_infty, 1, ERRNO_UNCHANGED),
@ -34,6 +36,12 @@ erf_test (void)
ALL_RM_TEST (erf, 0, erf_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
erf_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data erfc_test_data[] =
{
TEST_f_f (erfc, plus_infty, 0.0, ERRNO_UNCHANGED),
@ -32,6 +34,12 @@ erfc_test (void)
ALL_RM_TEST (erfc, 0, erfc_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
erfc_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data exp_test_data[] =
{
TEST_f_f (exp, plus_infty, plus_infty, ERRNO_UNCHANGED|NO_TEST_INLINE),
@ -34,6 +36,12 @@ exp_test (void)
ALL_RM_TEST (exp, 0, exp_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
exp_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data exp10_test_data[] =
{
TEST_f_f (exp10, plus_infty, plus_infty, ERRNO_UNCHANGED),
@ -41,6 +43,13 @@ pow10_test (void)
ALL_RM_TEST (pow10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
exp10_test ();
pow10_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data exp2_test_data[] =
{
TEST_f_f (exp2, plus_infty, plus_infty, ERRNO_UNCHANGED),
@ -34,6 +36,12 @@ exp2_test (void)
ALL_RM_TEST (exp2, 0, exp2_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
exp2_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data expm1_test_data[] =
{
TEST_f_f (expm1, plus_infty, plus_infty, ERRNO_UNCHANGED|NO_TEST_INLINE),
@ -34,6 +36,12 @@ expm1_test (void)
ALL_RM_TEST (expm1, 0, expm1_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
expm1_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data fabs_test_data[] =
{
TEST_f_f (fabs, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -44,6 +46,12 @@ fabs_test (void)
ALL_RM_TEST (fabs, 1, fabs_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
fabs_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fdim_test_data[] =
{
TEST_ff_f (fdim, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -114,6 +116,12 @@ fdim_test (void)
ALL_RM_TEST (fdim, 1, fdim_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fdim_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data floor_test_data[] =
{
TEST_f_f (floor, 0.0, 0.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -159,6 +161,12 @@ floor_test (void)
ALL_RM_TEST (floor, 1, floor_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
floor_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_fff_f_data fma_test_data[] =
{
TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -120,6 +122,12 @@ fma_test (void)
ALL_RM_TEST (fma, 1, fma_test_data, RUN_TEST_LOOP_fff_f, END);
}
static void
do_test (void)
{
fma_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fmax_test_data[] =
{
TEST_ff_f (fmax, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -115,6 +117,12 @@ fmax_test (void)
ALL_RM_TEST (fmax, 1, fmax_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fmax_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fmaxmag_test_data[] =
{
TEST_ff_f (fmaxmag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -129,6 +131,12 @@ fmaxmag_test (void)
ALL_RM_TEST (fmaxmag, 1, fmaxmag_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fmaxmag_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fmin_test_data[] =
{
TEST_ff_f (fmin, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -114,6 +116,12 @@ fmin_test (void)
ALL_RM_TEST (fmin, 1, fmin_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fmin_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fminmag_test_data[] =
{
TEST_ff_f (fminmag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -128,6 +130,12 @@ fminmag_test (void)
ALL_RM_TEST (fminmag, 1, fminmag_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fminmag_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data fmod_test_data[] =
{
/* fmod (+0, y) == +0 for y != 0. */
@ -262,6 +264,12 @@ fmod_test (void)
ALL_RM_TEST (fmod, 1, fmod_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
fmod_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data fpclassify_test_data[] =
{
TEST_f_i (fpclassify, qnan_value, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ fpclassify_test (void)
ALL_RM_TEST (fpclassify, 1, fpclassify_test_data, RUN_TEST_LOOP_f_i_tg, END);
}
static void
do_test (void)
{
fpclassify_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f1_data frexp_test_data[] =
{
TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -81,6 +83,12 @@ frexp_test (void)
ALL_RM_TEST (frexp, 1, frexp_test_data, RUN_TEST_LOOP_fI_f1, END, x);
}
static void
do_test (void)
{
frexp_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_fiu_M_data fromfp_test_data[] =
{
/* Infinity, NaN and values that are definitely out of range
@ -11931,6 +11933,12 @@ fromfp_test (void)
ALL_RM_TEST (fromfp, 1, fromfp_test_data, RUN_TEST_LOOP_fiu_M, END);
}
static void
do_test (void)
{
fromfp_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_fiu_M_data fromfpx_test_data[] =
{
/* Infinity, NaN and values that are definitely out of range
@ -11931,6 +11933,12 @@ fromfpx_test (void)
ALL_RM_TEST (fromfpx, 1, fromfpx_test_data, RUN_TEST_LOOP_fiu_M, END);
}
static void
do_test (void)
{
fromfpx_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data getpayload_test_data[] =
{
TEST_fp_f (getpayload, plus_infty, IGNORE, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -74,6 +76,12 @@ getpayload_test (void)
ALL_RM_TEST (getpayload, 1, getpayload_test_data, RUN_TEST_LOOP_fp_f, END);
}
static void
do_test (void)
{
getpayload_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data hypot_test_data[] =
{
TEST_ff_f (hypot, plus_infty, 1, plus_infty, ERRNO_UNCHANGED),
@ -171,6 +173,12 @@ hypot_test (void)
ALL_RM_TEST (hypot, 0, hypot_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
hypot_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data ilogb_test_data[] =
{
TEST_f_i (ilogb, 1, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -57,6 +59,12 @@ ilogb_test (void)
ALL_RM_TEST (ilogb, 1, ilogb_test_data, RUN_TEST_LOOP_f_i, END);
}
static void
do_test (void)
{
ilogb_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data iscanonical_test_data[] =
{
TEST_f_b (iscanonical, 0, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ iscanonical_test (void)
ALL_RM_TEST (iscanonical, 1, iscanonical_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
iscanonical_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data iseqsig_test_data[] =
{
TEST_ff_i (iseqsig, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ iseqsig_test (void)
ALL_RM_TEST (iseqsig, 1, iseqsig_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
iseqsig_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data isfinite_test_data[] =
{
TEST_f_b (isfinite, 0, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -48,6 +50,13 @@ finite_test (void)
ALL_RM_TEST (finite, 1, isfinite_test_data, RUN_TEST_LOOP_f_b, END);
}
static void
do_test (void)
{
isfinite_test ();
finite_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data isgreater_test_data[] =
{
TEST_ff_i (isgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ isgreater_test (void)
ALL_RM_TEST (isgreater, 1, isgreater_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
isgreater_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data isgreaterequal_test_data[] =
{
TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ isgreaterequal_test (void)
ALL_RM_TEST (isgreaterequal, 1, isgreaterequal_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
isgreaterequal_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data isinf_test_data[] =
{
TEST_f_b (isinf, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ isinf_test (void)
ALL_RM_TEST (isinf, 1, isinf_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
isinf_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data isless_test_data[] =
{
TEST_ff_i (isless, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ isless_test (void)
ALL_RM_TEST (isless, 1, isless_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
isless_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data islessequal_test_data[] =
{
TEST_ff_i (islessequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ islessequal_test (void)
ALL_RM_TEST (islessequal, 1, islessequal_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
islessequal_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data islessgreater_test_data[] =
{
TEST_ff_i (islessgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ islessgreater_test (void)
ALL_RM_TEST (islessgreater, 1, islessgreater_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
islessgreater_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data isnan_test_data[] =
{
TEST_f_b (isnan, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ isnan_test (void)
ALL_RM_TEST (isnan, 1, isnan_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
isnan_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data isnormal_test_data[] =
{
TEST_f_b (isnormal, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ isnormal_test (void)
ALL_RM_TEST (isnormal, 1, isnormal_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
isnormal_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data issignaling_test_data[] =
{
TEST_f_b (issignaling, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -43,6 +45,12 @@ issignaling_test (void)
ALL_RM_TEST (issignaling, 1, issignaling_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
issignaling_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data issubnormal_test_data[] =
{
TEST_f_b (issubnormal, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ issubnormal_test (void)
ALL_RM_TEST (issubnormal, 1, issubnormal_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
issubnormal_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_i_data isunordered_test_data[] =
{
TEST_ff_i (isunordered, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -75,6 +77,12 @@ isunordered_test (void)
ALL_RM_TEST (isunordered, 1, isunordered_test_data, RUN_TEST_LOOP_ff_i_tg, END);
}
static void
do_test (void)
{
isunordered_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_i_data iszero_test_data[] =
{
TEST_f_b (iszero, 0, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -41,6 +43,12 @@ iszero_test (void)
ALL_RM_TEST (iszero, 1, iszero_test_data, RUN_TEST_LOOP_f_b_tg, END);
}
static void
do_test (void)
{
iszero_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data j0_test_data[] =
{
/* j0 is the Bessel function of the first kind of order 0 */
@ -35,6 +37,12 @@ j0_test (void)
ALL_RM_TEST (j0, 0, j0_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
j0_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data j1_test_data[] =
{
/* j1 is the Bessel function of the first kind of order 1 */
@ -35,6 +37,12 @@ j1_test (void)
ALL_RM_TEST (j1, 0, j1_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
j1_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_if_f_data jn_test_data[] =
{
/* jn is the Bessel function of the first kind of order n. */
@ -60,6 +62,12 @@ jn_test (void)
ALL_RM_TEST (jn, 0, jn_test_data, RUN_TEST_LOOP_if_f, END);
}
static void
do_test (void)
{
jn_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f1_data lgamma_test_data[] =
{
TEST_f_f1 (lgamma, plus_infty, plus_infty, 1, ERRNO_UNCHANGED),
@ -47,6 +49,13 @@ gamma_test (void)
ALL_RM_TEST (gamma, 0, lgamma_test_data, RUN_TEST_LOOP_f_f1, END, signgam);
}
static void
do_test (void)
{
lgamma_test ();
gamma_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_l_data llogb_test_data[] =
{
TEST_f_l (llogb, 1, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -57,6 +59,12 @@ llogb_test (void)
ALL_RM_TEST (llogb, 1, llogb_test_data, RUN_TEST_LOOP_f_l, END);
}
static void
do_test (void)
{
llogb_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_L_data llrint_test_data[] =
{
/* Bug 6798: errno setting may be missing. */
@ -250,6 +252,12 @@ llrint_test (void)
ALL_RM_TEST (llrint, 1, llrint_test_data, RUN_TEST_LOOP_f_L, END);
}
static void
do_test (void)
{
llrint_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_L_data llround_test_data[] =
{
/* Bug 6797: errno setting may be missing. */
@ -285,6 +287,12 @@ llround_test (void)
ALL_RM_TEST (llround, 1, llround_test_data, RUN_TEST_LOOP_f_L, END);
}
static void
do_test (void)
{
llround_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data log_test_data[] =
{
TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@ -41,6 +43,12 @@ log_test (void)
ALL_RM_TEST (log, 0, log_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
log_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data log10_test_data[] =
{
TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@ -43,6 +45,12 @@ log10_test (void)
ALL_RM_TEST (log10, 0, log10_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
log10_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data log1p_test_data[] =
{
TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@ -38,6 +40,12 @@ log1p_test (void)
ALL_RM_TEST (log1p, 0, log1p_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
log1p_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data log2_test_data[] =
{
TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@ -42,6 +44,12 @@ log2_test (void)
ALL_RM_TEST (log2, 0, log2_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
log2_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data logb_test_data[] =
{
TEST_f_f (logb, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -70,6 +72,12 @@ logb_test (void)
ALL_RM_TEST (logb, 1, logb_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
logb_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_l_data lrint_test_data[] =
{
/* Bug 6798: errno setting may be missing. */
@ -345,6 +347,12 @@ lrint_test (void)
ALL_RM_TEST (lrint, 1, lrint_test_data, RUN_TEST_LOOP_f_l, END);
}
static void
do_test (void)
{
lrint_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_l_data lround_test_data[] =
{
/* Bug 6797: errno setting may be missing. */
@ -356,6 +358,12 @@ lround_test (void)
ALL_RM_TEST (lround, 1, lround_test_data, RUN_TEST_LOOP_f_l, END);
}
static void
do_test (void)
{
lround_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_fF_f1_data modf_test_data[] =
{
TEST_fF_f1 (modf, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -50,6 +52,12 @@ modf_test (void)
ALL_RM_TEST (modf, 1, modf_test_data, RUN_TEST_LOOP_fF_f1, END, x);
}
static void
do_test (void)
{
modf_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data nearbyint_test_data[] =
{
TEST_f_f (nearbyint, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -169,6 +171,12 @@ nearbyint_test (void)
ALL_RM_TEST (nearbyint, 1, nearbyint_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
nearbyint_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data nextafter_test_data[] =
{
TEST_ff_f (nextafter, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -129,6 +131,12 @@ nextafter_test (void)
ALL_RM_TEST (nextafter, 1, nextafter_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
nextafter_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data nextdown_test_data[] =
{
TEST_f_f (nextdown, minus_zero, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -69,6 +71,12 @@ nextdown_test (void)
argument to TEST_ indicates the literal should not be post-processed by
gen-libm-test.pl. */
static void
do_test (void)
{
nextdown_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_fj_f_data nexttoward_test_data[] =
{
TEST_fj_f (nexttoward, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -154,6 +156,12 @@ nexttoward_test (void)
ALL_RM_TEST (nexttoward, 1, nexttoward_test_data, RUN_TEST_LOOP_fj_f, END);
}
static void
do_test (void)
{
nexttoward_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_f_f_data nextup_test_data[] =
{
TEST_f_f (nextup, minus_zero, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@ -64,6 +66,12 @@ nextup_test (void)
ALL_RM_TEST (nextup, 1, nextup_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
nextup_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data pow_test_data[] =
{
TEST_ff_f (pow, qnan_value, 0, 1, ERRNO_UNCHANGED|NO_TEST_MATHVEC),
@ -369,6 +371,12 @@ pow_test (void)
ALL_RM_TEST (pow, 0, pow_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
pow_test ();
}
/*
* Local Variables:
* mode:c

View File

@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include "libm-test-driver.c"
static const struct test_ff_f_data remainder_test_data[] =
{
TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
@ -186,6 +188,13 @@ drem_test (void)
ALL_RM_TEST (drem, 1, remainder_test_data, RUN_TEST_LOOP_ff_f, END);
}
static void
do_test (void)
{
remainder_test ();
drem_test ();
}
/*
* Local Variables:
* mode:c

Some files were not shown because too many files have changed in this diff Show More