| /* Configuration for math tests. Generic version. |
| Copyright (C) 2013-2014 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) |