1#include <limits.h> 2 3#define F 140 4#define T 13 5 6feq (float x, float y) 7{ 8 if (x == y) 9 return T; 10 else 11 return F; 12} 13 14fne (float x, float y) 15{ 16 if (x != y) 17 return T; 18 else 19 return F; 20} 21 22flt (float x, float y) 23{ 24 if (x < y) 25 return T; 26 else 27 return F; 28} 29 30fge (float x, float y) 31{ 32 if (x >= y) 33 return T; 34 else 35 return F; 36} 37 38fgt (float x, float y) 39{ 40 if (x > y) 41 return T; 42 else 43 return F; 44} 45 46fle (float x, float y) 47{ 48 if (x <= y) 49 return T; 50 else 51 return F; 52} 53 54float args[] = 55{ 56 0.0F, 57 1.0F, 58 -1.0F, 59 __FLT_MAX__, 60 __FLT_MIN__, 61 0.0000000000001F, 62 123456789.0F, 63 -987654321.0F 64}; 65 66int correct_results[] = 67{ 68 T, F, F, T, F, T, 69 F, T, T, F, F, T, 70 F, T, F, T, T, F, 71 F, T, T, F, F, T, 72 F, T, T, F, F, T, 73 F, T, T, F, F, T, 74 F, T, T, F, F, T, 75 F, T, F, T, T, F, 76 F, T, F, T, T, F, 77 T, F, F, T, F, T, 78 F, T, F, T, T, F, 79 F, T, T, F, F, T, 80 F, T, F, T, T, F, 81 F, T, F, T, T, F, 82 F, T, T, F, F, T, 83 F, T, F, T, T, F, 84 F, T, T, F, F, T, 85 F, T, T, F, F, T, 86 T, F, F, T, F, T, 87 F, T, T, F, F, T, 88 F, T, T, F, F, T, 89 F, T, T, F, F, T, 90 F, T, T, F, F, T, 91 F, T, F, T, T, F, 92 F, T, F, T, T, F, 93 F, T, F, T, T, F, 94 F, T, F, T, T, F, 95 T, F, F, T, F, T, 96 F, T, F, T, T, F, 97 F, T, F, T, T, F, 98 F, T, F, T, T, F, 99 F, T, F, T, T, F, 100 F, T, F, T, T, F, 101 F, T, T, F, F, T, 102 F, T, F, T, T, F, 103 F, T, T, F, F, T, 104 T, F, F, T, F, T, 105 F, T, T, F, F, T, 106 F, T, T, F, F, T, 107 F, T, F, T, T, F, 108 F, T, F, T, T, F, 109 F, T, T, F, F, T, 110 F, T, F, T, T, F, 111 F, T, T, F, F, T, 112 F, T, F, T, T, F, 113 T, F, F, T, F, T, 114 F, T, T, F, F, T, 115 F, T, F, T, T, F, 116 F, T, F, T, T, F, 117 F, T, F, T, T, F, 118 F, T, F, T, T, F, 119 F, T, T, F, F, T, 120 F, T, F, T, T, F, 121 F, T, F, T, T, F, 122 T, F, F, T, F, T, 123 F, T, F, T, T, F, 124 F, T, T, F, F, T, 125 F, T, T, F, F, T, 126 F, T, T, F, F, T, 127 F, T, T, F, F, T, 128 F, T, T, F, F, T, 129 F, T, T, F, F, T, 130 F, T, T, F, F, T, 131 T, F, F, T, F, T, 132}; 133 134int 135main (void) 136{ 137 int i, j, *res = correct_results; 138 139 for (i = 0; i < 8; i++) 140 { 141 float arg0 = args[i]; 142 for (j = 0; j < 8; j++) 143 { 144 float arg1 = args[j]; 145 146 if (feq (arg0, arg1) != *res++) 147 abort (); 148 if (fne (arg0, arg1) != *res++) 149 abort (); 150 if (flt (arg0, arg1) != *res++) 151 abort (); 152 if (fge (arg0, arg1) != *res++) 153 abort (); 154 if (fgt (arg0, arg1) != *res++) 155 abort (); 156 if (fle (arg0, arg1) != *res++) 157 abort (); 158 } 159 } 160 exit (0); 161} 162