]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/generic/math-tests.h
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / generic / math-tests.h
index 9393229a361c2e85e4e7c70ab7e495d11eefeeb4..f818cb50d538c22a1c6af39c7d75dbc793ed20ea 100644 (file)
@@ -1,5 +1,5 @@
 /* Configuration for math tests.  Generic version.
-   Copyright (C) 2013-2016 Free Software Foundation, Inc.
+   Copyright (C) 2013-2019 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
 
    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/>.  */
+   <https://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
+#include <bits/floatn.h>
 
-/* 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
+/* Expand the appropriate macro for whether to enable tests for a
+   given type.  */
+#if __HAVE_DISTINCT_FLOAT128
+# define MATH_TESTS_TG(PREFIX, ARGS, TYPE)                             \
+  (sizeof (TYPE) == sizeof (float) ? PREFIX ## float ARGS              \
+   : sizeof (TYPE) == sizeof (double) ? PREFIX ## double ARGS          \
+   : __builtin_types_compatible_p (TYPE, _Float128) ? PREFIX ## float128 ARGS \
+   : PREFIX ## long_double ARGS)
+# else
+# define MATH_TESTS_TG(PREFIX, ARGS, TYPE)                             \
+  (sizeof (TYPE) == sizeof (float) ? PREFIX ## float ARGS              \
+   : sizeof (TYPE) == sizeof (double) ? PREFIX ## double ARGS          \
+   : PREFIX ## long_double ARGS)
 #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))
+/* Return nonzero value if to run tests involving sNaN values for X.  */
+#define SNAN_TESTS(x) MATH_TESTS_TG (SNAN_TESTS_, , x)
 
-/* 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 ROUNDING_TESTS(TYPE, MODE)             \
+  MATH_TESTS_TG (ROUNDING_TESTS_, (MODE), TYPE)
 
-#define EXCEPTION_TESTS(TYPE)                                  \
-  (sizeof (TYPE) == sizeof (float) ? EXCEPTION_TESTS_float     \
-   : sizeof (TYPE) == sizeof (double) ? EXCEPTION_TESTS_double \
-   : EXCEPTION_TESTS_long_double)
+#define EXCEPTION_TESTS(TYPE) MATH_TESTS_TG (EXCEPTION_TESTS_, , TYPE)
 
-/* 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
+#include <math-tests-exceptions.h>
+#include <math-tests-rounding.h>
+#include <math-tests-snan.h>
+#include <math-tests-snan-cast.h>
+#include <math-tests-snan-payload.h>
+#include <math-tests-trap.h>
+#include <math-tests-trap-force.h>