re PR target/32641 (C99 fpclassify, isinf, isfinite, isnormal may raise FP exceptions)
fixincludes: PR target/32641 * inclhack.def (solaris_math_4, solaris_math_5, solaris_math_6, solaris_math_7): Constify and make FP exception-safe. * tests/base/iso/math_c99.h: Update. * fixincl.x: Regenerate. gcc/testsuite: * gcc.dg/c99-math-double-1.c: Mark test variables as volatile. Test negative numbers also. * gcc.dg/c99-math-float-1.c: Likewise. * gcc.dg/c99-math-long-double-1.c: Likewise. * gcc.dg/c99-math.h: Check for FP exceptions. Update for negative test inputs. From-SVN: r126730
This commit is contained in:
parent
2a48b790b2
commit
dadda6caba
9 changed files with 226 additions and 67 deletions
|
@ -1,3 +1,13 @@
|
|||
2007-07-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
PR target/32641
|
||||
|
||||
* inclhack.def (solaris_math_4, solaris_math_5, solaris_math_6,
|
||||
solaris_math_7): Constify and make FP exception-safe.
|
||||
* tests/base/iso/math_c99.h: Update.
|
||||
|
||||
* fixincl.x: Regenerate.
|
||||
|
||||
2007-07-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
|
||||
|
||||
PR libgcj/28190
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
*
|
||||
* DO NOT EDIT THIS FILE (fixincl.x)
|
||||
*
|
||||
* It has been AutoGen-ed Friday June 29, 2007 at 06:59:26 PM MEST
|
||||
* It has been AutoGen-ed Saturday July 7, 2007 at 11:23:30 PM EDT
|
||||
* From the definitions inclhack.def
|
||||
* and the template file fixincl
|
||||
*/
|
||||
/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Jun 29 18:59:26 MEST 2007
|
||||
/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jul 7 23:23:30 EDT 2007
|
||||
*
|
||||
* You must regenerate it. Use the ./genfixes script.
|
||||
*
|
||||
|
@ -5629,7 +5629,7 @@ static tTestDesc aSolaris_Math_4Tests[] = {
|
|||
static const char* apzSolaris_Math_4Patch[] = {
|
||||
"format",
|
||||
"#define\tfpclassify(x) \\\n\
|
||||
__extension__ ({ __typeof(x) __x_fp = (x); \\\n\
|
||||
__extension__ ({ const __typeof(x) __x_fp = (x); \\\n\
|
||||
\t\t isnan(__x_fp) \\\n\
|
||||
\t\t ? FP_NAN \\\n\
|
||||
\t\t : isinf(__x_fp) \\\n\
|
||||
|
@ -5682,8 +5682,12 @@ static tTestDesc aSolaris_Math_5Tests[] = {
|
|||
static const char* apzSolaris_Math_5Patch[] = {
|
||||
"format",
|
||||
"#define\tisfinite(x) \\\n\
|
||||
__extension__ ({ __typeof (x) __x_f = (x); \\\n\
|
||||
\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })",
|
||||
__extension__ ({ const __typeof (x) __x_f = (x); \\\n\
|
||||
\t\t __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n\
|
||||
\t\t\t ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n\
|
||||
\t\t\t : sizeof(__x_f) == sizeof(long double) \\\n\
|
||||
\t\t\t ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n\
|
||||
\t\t\t : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })",
|
||||
"^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)",
|
||||
(char*)NULL };
|
||||
|
||||
|
@ -5727,8 +5731,12 @@ static tTestDesc aSolaris_Math_6Tests[] = {
|
|||
static const char* apzSolaris_Math_6Patch[] = {
|
||||
"format",
|
||||
"#define\tisinf(x) \\\n\
|
||||
__extension__ ({ __typeof (x) __x_i = (x); \\\n\
|
||||
\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })",
|
||||
__extension__ ({ const __typeof (x) __x_i = (x); \\\n\
|
||||
\t\t __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n\
|
||||
\t\t\t ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n\
|
||||
\t\t\t : sizeof(__x_i) == sizeof(long double) \\\n\
|
||||
\t\t\t ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n\
|
||||
\t\t\t : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })",
|
||||
"^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)",
|
||||
(char*)NULL };
|
||||
|
||||
|
@ -5772,14 +5780,13 @@ static tTestDesc aSolaris_Math_7Tests[] = {
|
|||
static const char* apzSolaris_Math_7Patch[] = {
|
||||
"format",
|
||||
"#define\tisnormal(x) \\\n\
|
||||
__extension__ ({ __typeof(x) __x_n = (x); \\\n\
|
||||
\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n\
|
||||
__extension__ ({ const __typeof(x) __x_n = (x); \\\n\
|
||||
\t\t __builtin_expect(isfinite(__x_n) \\\n\
|
||||
\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n\
|
||||
\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n\
|
||||
\t\t\t\t\t ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n\
|
||||
\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n\
|
||||
\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n\
|
||||
\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })",
|
||||
\t\t\t\t\t ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n\
|
||||
\t\t\t\t\t : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })",
|
||||
"^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)",
|
||||
(char*)NULL };
|
||||
|
||||
|
|
|
@ -3088,7 +3088,7 @@ fix = {
|
|||
files = iso/math_c99.h;
|
||||
c_fix = format;
|
||||
c_fix_arg = "#define\tfpclassify(x) \\\n"
|
||||
" __extension__ ({ __typeof(x) __x_fp = (x); \\\n"
|
||||
" __extension__ ({ const __typeof(x) __x_fp = (x); \\\n"
|
||||
"\t\t isnan(__x_fp) \\\n"
|
||||
"\t\t ? FP_NAN \\\n"
|
||||
"\t\t : isinf(__x_fp) \\\n"
|
||||
|
@ -3112,8 +3112,12 @@ fix = {
|
|||
files = iso/math_c99.h;
|
||||
c_fix = format;
|
||||
c_fix_arg = "#define\tisfinite(x) \\\n"
|
||||
" __extension__ ({ __typeof (x) __x_f = (x); \\\n"
|
||||
"\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })";
|
||||
" __extension__ ({ const __typeof (x) __x_f = (x); \\\n"
|
||||
"\t\t __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n"
|
||||
"\t\t\t ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n"
|
||||
"\t\t\t : sizeof(__x_f) == sizeof(long double) \\\n"
|
||||
"\t\t\t ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n"
|
||||
"\t\t\t : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })";
|
||||
c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
|
||||
test_text =
|
||||
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
||||
|
@ -3128,8 +3132,12 @@ fix = {
|
|||
files = iso/math_c99.h;
|
||||
c_fix = format;
|
||||
c_fix_arg = "#define\tisinf(x) \\\n"
|
||||
" __extension__ ({ __typeof (x) __x_i = (x); \\\n"
|
||||
"\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })";
|
||||
" __extension__ ({ const __typeof (x) __x_i = (x); \\\n"
|
||||
"\t\t __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n"
|
||||
"\t\t\t ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n"
|
||||
"\t\t\t : sizeof(__x_i) == sizeof(long double) \\\n"
|
||||
"\t\t\t ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n"
|
||||
"\t\t\t : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })";
|
||||
c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
|
||||
test_text =
|
||||
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
||||
|
@ -3144,14 +3152,13 @@ fix = {
|
|||
files = iso/math_c99.h;
|
||||
c_fix = format;
|
||||
c_fix_arg = "#define\tisnormal(x) \\\n"
|
||||
" __extension__ ({ __typeof(x) __x_n = (x); \\\n"
|
||||
"\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n"
|
||||
" __extension__ ({ const __typeof(x) __x_n = (x); \\\n"
|
||||
"\t\t __builtin_expect(isfinite(__x_n) \\\n"
|
||||
"\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n"
|
||||
"\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n"
|
||||
"\t\t\t\t\t ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n"
|
||||
"\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n"
|
||||
"\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n"
|
||||
"\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })";
|
||||
"\t\t\t\t\t ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n"
|
||||
"\t\t\t\t\t : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })";
|
||||
c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
|
||||
test_text =
|
||||
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
|
||||
#undef fpclassify
|
||||
#define fpclassify(x) \
|
||||
__extension__ ({ __typeof(x) __x_fp = (x); \
|
||||
__extension__ ({ const __typeof(x) __x_fp = (x); \
|
||||
isnan(__x_fp) \
|
||||
? FP_NAN \
|
||||
: isinf(__x_fp) \
|
||||
|
@ -55,8 +55,12 @@
|
|||
#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
|
||||
#undef isfinite
|
||||
#define isfinite(x) \
|
||||
__extension__ ({ __typeof (x) __x_f = (x); \
|
||||
__builtin_expect(!isnan(__x_f - __x_f), 1); })
|
||||
__extension__ ({ const __typeof (x) __x_f = (x); \
|
||||
__builtin_expect(sizeof(__x_f) == sizeof(float) \
|
||||
? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \
|
||||
: sizeof(__x_f) == sizeof(long double) \
|
||||
? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \
|
||||
: islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })
|
||||
#endif /* SOLARIS_MATH_5_CHECK */
|
||||
|
||||
|
||||
|
@ -64,8 +68,12 @@
|
|||
#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
|
||||
#undef isinf
|
||||
#define isinf(x) \
|
||||
__extension__ ({ __typeof (x) __x_i = (x); \
|
||||
__builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
|
||||
__extension__ ({ const __typeof (x) __x_i = (x); \
|
||||
__builtin_expect(sizeof(__x_i) == sizeof(float) \
|
||||
? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \
|
||||
: sizeof(__x_i) == sizeof(long double) \
|
||||
? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \
|
||||
: isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })
|
||||
#endif /* SOLARIS_MATH_6_CHECK */
|
||||
|
||||
|
||||
|
@ -73,14 +81,13 @@
|
|||
#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
|
||||
#undef isnormal
|
||||
#define isnormal(x) \
|
||||
__extension__ ({ __typeof(x) __x_n = (x); \
|
||||
if (__x_n < 0.0) __x_n = -__x_n; \
|
||||
__extension__ ({ const __typeof(x) __x_n = (x); \
|
||||
__builtin_expect(isfinite(__x_n) \
|
||||
&& (sizeof(__x_n) == sizeof(float) \
|
||||
? __x_n >= __FLT_MIN__ \
|
||||
? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \
|
||||
: sizeof(__x_n) == sizeof(long double) \
|
||||
? __x_n >= __LDBL_MIN__ \
|
||||
: __x_n >= __DBL_MIN__), 1); })
|
||||
? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \
|
||||
: isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })
|
||||
#endif /* SOLARIS_MATH_7_CHECK */
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2007-07-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/c99-math-double-1.c: Mark test variables as volatile.
|
||||
Test negative numbers also.
|
||||
* gcc.dg/c99-math-float-1.c: Likewise.
|
||||
* gcc.dg/c99-math-long-double-1.c: Likewise.
|
||||
* gcc.dg/c99-math.h: Check for FP exceptions. Update for negative
|
||||
test inputs.
|
||||
|
||||
2007-07-18 Bob Wilson <bob.wilson@acm.org>
|
||||
|
||||
* lib/target-supports.exp (check_effective_target_sync_int_long):
|
||||
|
|
|
@ -6,14 +6,17 @@
|
|||
|
||||
int main(void)
|
||||
{
|
||||
double nan = NAN;
|
||||
double inf = INFINITY;
|
||||
double huge = HUGE_VAL;
|
||||
double norm = __DBL_MIN__;
|
||||
double sub = __DBL_MIN__ / 2;
|
||||
double zero = 0.0;
|
||||
volatile double nan = NAN;
|
||||
volatile double inf = INFINITY;
|
||||
volatile double huge = HUGE_VAL;
|
||||
volatile double norm1 = __DBL_MIN__;
|
||||
volatile double norm2 = 1;
|
||||
volatile double norm3 = __DBL_MAX__;
|
||||
volatile double sub = __DBL_MIN__ / 2;
|
||||
volatile double zero = 0.0;
|
||||
|
||||
C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
|
||||
C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
|
||||
C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -6,14 +6,17 @@
|
|||
|
||||
int main(void)
|
||||
{
|
||||
float nan = NAN;
|
||||
float inf = INFINITY;
|
||||
float huge = HUGE_VALF;
|
||||
float norm = __FLT_MIN__;
|
||||
float sub = __FLT_MIN__ / 2;
|
||||
float zero = 0.0f;
|
||||
volatile float nan = NAN;
|
||||
volatile float inf = INFINITY;
|
||||
volatile float huge = HUGE_VALF;
|
||||
volatile float norm1 = __FLT_MIN__;
|
||||
volatile float norm2 = 1;
|
||||
volatile float norm3 = __FLT_MAX__;
|
||||
volatile float sub = __FLT_MIN__ / 2;
|
||||
volatile float zero = 0.0f;
|
||||
|
||||
C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
|
||||
C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
|
||||
C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -6,14 +6,17 @@
|
|||
|
||||
int main(void)
|
||||
{
|
||||
long double nan = NAN;
|
||||
long double inf = INFINITY;
|
||||
long double huge = HUGE_VALL;
|
||||
long double norm = __LDBL_MIN__;
|
||||
long double sub = __LDBL_MIN__ / 2;
|
||||
long double zero = 0.0l;
|
||||
volatile long double nan = NAN;
|
||||
volatile long double inf = INFINITY;
|
||||
volatile long double huge = HUGE_VALL;
|
||||
volatile long double norm1 = __LDBL_MIN__;
|
||||
volatile long double norm2 = 1;
|
||||
volatile long double norm3 = __LDBL_MAX__;
|
||||
volatile long double sub = __LDBL_MIN__ / 2;
|
||||
volatile long double zero = 0.0l;
|
||||
|
||||
C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
|
||||
C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
|
||||
C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
#include <math.h>
|
||||
#include <fenv.h>
|
||||
|
||||
extern void abort(void);
|
||||
|
||||
#define C99_MATH_TESTS(nan, inf, huge, norm, sub, zero) \
|
||||
#define C99_MATH_TESTS(nan, inf, huge, norm1, norm2, norm3, sub, zero, neg) \
|
||||
{ \
|
||||
if (feclearexcept (FE_ALL_EXCEPT) != 0) \
|
||||
abort(); \
|
||||
\
|
||||
\
|
||||
if (fpclassify (nan) != FP_NAN) \
|
||||
abort (); \
|
||||
\
|
||||
|
@ -13,7 +18,13 @@ extern void abort(void);
|
|||
if (fpclassify (huge) != FP_INFINITE) \
|
||||
abort (); \
|
||||
\
|
||||
if (fpclassify (norm) != FP_NORMAL) \
|
||||
if (fpclassify (norm1) != FP_NORMAL) \
|
||||
abort (); \
|
||||
\
|
||||
if (fpclassify (norm2) != FP_NORMAL) \
|
||||
abort (); \
|
||||
\
|
||||
if (fpclassify (norm3) != FP_NORMAL) \
|
||||
abort (); \
|
||||
\
|
||||
if (fpclassify (sub) != FP_SUBNORMAL) \
|
||||
|
@ -32,7 +43,13 @@ extern void abort(void);
|
|||
if (isnan (huge)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isnan (norm)) \
|
||||
if (isnan (norm1)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isnan (norm2)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isnan (norm3)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isnan (sub)) \
|
||||
|
@ -51,7 +68,13 @@ extern void abort(void);
|
|||
if (!isinf (huge)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isinf (norm)) \
|
||||
if (isinf (norm1)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isinf (norm2)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isinf (norm3)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isinf (sub)) \
|
||||
|
@ -70,7 +93,13 @@ extern void abort(void);
|
|||
if (isfinite (huge)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isfinite (norm)) \
|
||||
if (!isfinite (norm1)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isfinite (norm2)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isfinite (norm3)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isfinite (sub)) \
|
||||
|
@ -89,7 +118,13 @@ extern void abort(void);
|
|||
if (isnormal (huge)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isnormal (norm)) \
|
||||
if (!isnormal (norm1)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isnormal (norm2)) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isnormal (norm3)) \
|
||||
abort (); \
|
||||
\
|
||||
if (isnormal (sub)) \
|
||||
|
@ -99,28 +134,103 @@ extern void abort(void);
|
|||
abort (); \
|
||||
\
|
||||
\
|
||||
if (signbit (norm)) \
|
||||
if (!!signbit (nan) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!signbit (-(norm))) \
|
||||
if (!!signbit (inf) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (huge) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (norm1) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (norm2) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (norm3) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (sub) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
if (!!signbit (zero) != neg) \
|
||||
abort (); \
|
||||
\
|
||||
\
|
||||
if (!isgreater ((inf), (norm))) \
|
||||
if (neg) \
|
||||
{ \
|
||||
if (!isless ((inf), (norm1))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((inf), (norm2))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((inf), (norm3))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!islessequal ((inf), (huge))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreater ((norm1), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreater ((norm2), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreater ((norm3), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreaterequal ((huge), (inf))) \
|
||||
abort (); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
if (!isgreater ((inf), (norm1))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreater ((inf), (norm2))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreater ((inf), (norm3))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreaterequal ((inf), (huge))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((norm1), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((norm2), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((norm3), (inf))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!islessequal ((huge), (inf))) \
|
||||
abort (); \
|
||||
} \
|
||||
\
|
||||
if (!islessgreater ((inf), (norm1))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isgreaterequal ((inf), (huge))) \
|
||||
if (!islessgreater ((inf), (norm2))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isless ((norm), (inf))) \
|
||||
if (!islessgreater ((inf), (norm3))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!islessequal ((huge), (inf))) \
|
||||
if (!isunordered ((nan), (norm1))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!islessgreater ((inf), (norm))) \
|
||||
if (!isunordered ((nan), (norm2))) \
|
||||
abort (); \
|
||||
\
|
||||
if (!isunordered ((nan), (norm))) \
|
||||
if (!isunordered ((nan), (norm3))) \
|
||||
abort (); \
|
||||
\
|
||||
\
|
||||
if (fetestexcept (FE_ALL_EXCEPT) != 0) \
|
||||
abort(); \
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue