|  | /* 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 |