1 #include <limits.h>
2 
3 #define F 140
4 #define T 13
5 
feq(float x,float y)6 feq (float x, float y)
7 {
8   if (x == y)
9     return T;
10   else
11     return F;
12 }
13 
fne(float x,float y)14 fne (float x, float y)
15 {
16   if (x != y)
17     return T;
18   else
19     return F;
20 }
21 
flt(float x,float y)22 flt (float x, float y)
23 {
24   if (x < y)
25     return T;
26   else
27     return F;
28 }
29 
fge(float x,float y)30 fge (float x, float y)
31 {
32   if (x >= y)
33     return T;
34   else
35     return F;
36 }
37 
fgt(float x,float y)38 fgt (float x, float y)
39 {
40   if (x > y)
41     return T;
42   else
43     return F;
44 }
45 
fle(float x,float y)46 fle (float x, float y)
47 {
48   if (x <= y)
49     return T;
50   else
51     return F;
52 }
53 
54 float 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 
66 int 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 
134 int
main(void)135 main (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