summaryrefslogtreecommitdiff
path: root/test/math/math-tests.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/math/math-tests.h')
-rw-r--r--test/math/math-tests.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/math/math-tests.h b/test/math/math-tests.h
new file mode 100644
index 0000000..9393229
--- /dev/null
+++ b/test/math/math-tests.h
@@ -0,0 +1,89 @@
+/* Configuration for math tests. Generic version.
+ Copyright (C) 2013-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/>. */
+
+/* Indicate whether to run tests involving sNaN values for the float, double,
+ and long double C data types, respectively. All are run unless
+ overridden. */
+#ifndef SNAN_TESTS_float
+# define SNAN_TESTS_float 1
+#endif
+#ifndef SNAN_TESTS_double
+# define SNAN_TESTS_double 1
+#endif
+#ifndef SNAN_TESTS_long_double
+# define SNAN_TESTS_long_double 1
+#endif
+
+/* Return nonzero value if to run tests involving sNaN values for X. */
+#define SNAN_TESTS(x) \
+ (sizeof (x) == sizeof (float) ? SNAN_TESTS_float \
+ : sizeof (x) == sizeof (double) ? SNAN_TESTS_double \
+ : SNAN_TESTS_long_double)
+
+/* Indicate whether to run tests involving type casts of sNaN values. These
+ are run unless overridden. */
+#ifndef SNAN_TESTS_TYPE_CAST
+# define SNAN_TESTS_TYPE_CAST 1
+#endif
+
+/* Indicate whether to run tests involving a given rounding mode for a
+ given floating-point type, given that fesetround succeeds for that
+ mode. All are run if fesetround succeeds unless overridden. */
+#ifndef ROUNDING_TESTS_float
+# define ROUNDING_TESTS_float(MODE) 1
+#endif
+#ifndef ROUNDING_TESTS_double
+# define ROUNDING_TESTS_double(MODE) 1
+#endif
+#ifndef ROUNDING_TESTS_long_double
+# define ROUNDING_TESTS_long_double(MODE) 1
+#endif
+
+#define ROUNDING_TESTS(TYPE, MODE) \
+ (sizeof (TYPE) == sizeof (float) ? ROUNDING_TESTS_float (MODE) \
+ : sizeof (TYPE) == sizeof (double) ? ROUNDING_TESTS_double (MODE) \
+ : ROUNDING_TESTS_long_double (MODE))
+
+/* Indicate whether to run tests of floating-point exceptions for a
+ given floating-point type, given that the exception macros are
+ defined. All are run unless overridden. */
+#ifndef EXCEPTION_TESTS_float
+# define EXCEPTION_TESTS_float 1
+#endif
+#ifndef EXCEPTION_TESTS_double
+# define EXCEPTION_TESTS_double 1
+#endif
+#ifndef EXCEPTION_TESTS_long_double
+# define EXCEPTION_TESTS_long_double 1
+#endif
+
+#define EXCEPTION_TESTS(TYPE) \
+ (sizeof (TYPE) == sizeof (float) ? EXCEPTION_TESTS_float \
+ : sizeof (TYPE) == sizeof (double) ? EXCEPTION_TESTS_double \
+ : EXCEPTION_TESTS_long_double)
+
+/* Indicate whether the given exception trap(s) can be enabled
+ in feenableexcept. If non-zero, the traps are always supported.
+ If zero, traps may or may not be supported depending on the
+ target (this can be determined by checking the return value
+ of feenableexcept). This enables skipping of tests which use
+ traps. By default traps are supported unless overridden. */
+#ifndef EXCEPTION_ENABLE_SUPPORTED
+# define EXCEPTION_ENABLE_SUPPORTED(EXCEPT) \
+ (EXCEPTION_TESTS_float || EXCEPTION_TESTS_double)
+#endif