diff options
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c b/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c new file mode 100644 index 0000000000..6412e1781d --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c @@ -0,0 +1,73 @@ +/* Test totalorderl and totalordermagl for ldbl-128ibm. + Copyright (C) 2016-2018 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/>. */ + +#include <math.h> +#include <math_ldbl.h> +#include <stdbool.h> +#include <stdio.h> + +struct test +{ + double hi, lo1, lo2; +}; + +static const struct test tests[] = + { + { __builtin_nan (""), 1, __builtin_nans ("") }, + { -__builtin_nan (""), 1, __builtin_nans ("") }, + { __builtin_nans (""), 1, __builtin_nan ("") }, + { -__builtin_nans (""), 1, __builtin_nan ("") }, + { __builtin_inf (), 0.0, -0.0 }, + { -__builtin_inf (), 0.0, -0.0 }, + { 1.5, 0.0, -0.0 }, + }; + +static int +do_test (void) +{ + int result = 0; + + for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) + { + long double ldx = ldbl_pack (tests[i].hi, tests[i].lo1); + long double ldy = ldbl_pack (tests[i].hi, tests[i].lo2); + bool to1 = totalorderl (ldx, ldy); + bool to2 = totalorderl (ldy, ldx); + if (to1 && to2) + printf ("PASS: test %zu\n", i); + else + { + printf ("FAIL: test %zu\n", i); + result = 1; + } + to1 = totalordermagl (ldx, ldy); + to2 = totalordermagl (ldy, ldx); + if (to1 && to2) + printf ("PASS: test %zu (totalordermagl)\n", i); + else + { + printf ("FAIL: test %zu (totalordermagl)\n", i); + result = 1; + } + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |