modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c (about) 1 #ifndef FLOAT 2 #define FLOAT double 3 #endif 4 5 void 6 test_isunordered(FLOAT x, FLOAT y, int true) 7 { 8 if (__builtin_isunordered(x, y)) 9 { 10 if (! true) 11 abort (); 12 } 13 else 14 { 15 if (true) 16 abort (); 17 } 18 } 19 20 void 21 test_isless(FLOAT x, FLOAT y, int true) 22 { 23 if (__builtin_isless(x, y)) 24 { 25 if (! true) 26 abort (); 27 } 28 else 29 { 30 if (true) 31 abort (); 32 } 33 } 34 35 void 36 test_islessequal(FLOAT x, FLOAT y, int true) 37 { 38 if (__builtin_islessequal(x, y)) 39 { 40 if (! true) 41 abort (); 42 } 43 else 44 { 45 if (true) 46 abort (); 47 } 48 } 49 50 void 51 test_isgreater(FLOAT x, FLOAT y, int true) 52 { 53 if (__builtin_isgreater(x, y)) 54 { 55 if (! true) 56 abort (); 57 } 58 else 59 { 60 if (true) 61 abort (); 62 } 63 } 64 65 void 66 test_isgreaterequal(FLOAT x, FLOAT y, int true) 67 { 68 if (__builtin_isgreaterequal(x, y)) 69 { 70 if (! true) 71 abort (); 72 } 73 else 74 { 75 if (true) 76 abort (); 77 } 78 } 79 80 void 81 test_islessgreater(FLOAT x, FLOAT y, int true) 82 { 83 if (__builtin_islessgreater(x, y)) 84 { 85 if (! true) 86 abort (); 87 } 88 else 89 { 90 if (true) 91 abort (); 92 } 93 } 94 95 #define NAN (0.0 / 0.0) 96 97 int 98 main() 99 { 100 struct try 101 { 102 FLOAT x, y; 103 unsigned unord : 1; 104 unsigned lt : 1; 105 unsigned le : 1; 106 unsigned gt : 1; 107 unsigned ge : 1; 108 unsigned lg : 1; 109 }; 110 111 static struct try const data[] = 112 { 113 { NAN, NAN, 1, 0, 0, 0, 0, 0 }, 114 { 0.0, NAN, 1, 0, 0, 0, 0, 0 }, 115 { NAN, 0.0, 1, 0, 0, 0, 0, 0 }, 116 { 0.0, 0.0, 0, 0, 1, 0, 1, 0 }, 117 { 1.0, 2.0, 0, 1, 1, 0, 0, 1 }, 118 { 2.0, 1.0, 0, 0, 0, 1, 1, 1 }, 119 }; 120 121 const int n = sizeof(data) / sizeof(data[0]); 122 int i; 123 124 for (i = 0; i < n; ++i) 125 { 126 test_isunordered (data[i].x, data[i].y, data[i].unord); 127 test_isless (data[i].x, data[i].y, data[i].lt); 128 test_islessequal (data[i].x, data[i].y, data[i].le); 129 test_isgreater (data[i].x, data[i].y, data[i].gt); 130 test_isgreaterequal (data[i].x, data[i].y, data[i].ge); 131 test_islessgreater (data[i].x, data[i].y, data[i].lg); 132 } 133 134 exit (0); 135 }