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