| #include <limits.h> |
| |
| #define F 140 |
| #define T 13 |
| |
| feq (float x, float y) |
| { |
| if (x == y) |
| return T; |
| else |
| return F; |
| } |
| |
| fne (float x, float y) |
| { |
| if (x != y) |
| return T; |
| else |
| return F; |
| } |
| |
| flt (float x, float y) |
| { |
| if (x < y) |
| return T; |
| else |
| return F; |
| } |
| |
| fge (float x, float y) |
| { |
| if (x >= y) |
| return T; |
| else |
| return F; |
| } |
| |
| fgt (float x, float y) |
| { |
| if (x > y) |
| return T; |
| else |
| return F; |
| } |
| |
| fle (float x, float y) |
| { |
| if (x <= y) |
| return T; |
| else |
| return F; |
| } |
| |
| float args[] = |
| { |
| 0.0F, |
| 1.0F, |
| -1.0F, |
| __FLT_MAX__, |
| __FLT_MIN__, |
| 0.0000000000001F, |
| 123456789.0F, |
| -987654321.0F |
| }; |
| |
| int correct_results[] = |
| { |
| T, F, F, T, F, T, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| T, F, F, T, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| T, F, F, T, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| T, F, F, T, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| T, F, F, T, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| T, F, F, T, F, T, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, F, T, T, F, |
| F, T, F, T, T, F, |
| T, F, F, T, F, T, |
| F, T, F, T, T, F, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| F, T, T, F, F, T, |
| T, F, F, T, F, T, |
| }; |
| |
| int |
| main (void) |
| { |
| int i, j, *res = correct_results; |
| |
| for (i = 0; i < 8; i++) |
| { |
| float arg0 = args[i]; |
| for (j = 0; j < 8; j++) |
| { |
| float arg1 = args[j]; |
| |
| if (feq (arg0, arg1) != *res++) |
| abort (); |
| if (fne (arg0, arg1) != *res++) |
| abort (); |
| if (flt (arg0, arg1) != *res++) |
| abort (); |
| if (fge (arg0, arg1) != *res++) |
| abort (); |
| if (fgt (arg0, arg1) != *res++) |
| abort (); |
| if (fle (arg0, arg1) != *res++) |
| abort (); |
| } |
| } |
| exit (0); |
| } |