11 int f2(short a, short b)
13 return a < b && b < a;
16 int f3(short a, short b)
18 return a < b && b > a;
21 int f4(short a, short b, short c)
23 return (a <= c) & (b <= c);
26 int g(unsigned a, unsigned b)
28 return ((a >> 12) | 5) & ((b >> 12) | 5);
31 int g2(unsigned a, unsigned b)
33 return (a & 5) | (b & 5);
36 int g3(int a, int b, int z)
38 return (a | z) & (b | z);
43 /* logical implication */
44 return (a < b) <= (a <= b);
49 return (a < b) == (a <= b);
54 return (a < b) != (a <= b);
59 return (a ? 1 : 0) && !a;
64 return (a ? 1 : 0) || !a;
69 return a < b || a == b;
74 return a < b && a <= b;
79 return a < b || a >= b;
84 return a < b ^ a <= b;
89 #define UOP(func,val,should_be) { printf("%s(%d) -> %d (should be %d)\n", #func, val, func(val), should_be); assert(func(val) == should_be); }
90 #define BOP(func,val1,val2,should_be) { printf("%s(%d,%d) -> %d (should be %d)\n", #func, val1, val2, func(val1,val2), should_be); assert(func(val1,val2) == should_be); }
91 #define TOP(func,val1,val2,val3,should_be) { printf("%s(%d,%d,%d) -> %d (should be %d)\n", #func, val1, val2, val3, func(val1,val2,val3), should_be); assert(func(val1,val2,val3) == should_be); }
99 BOP(f, INT_MIN, INT_MIN, 1);
100 BOP(f, INT_MIN, -1, 1);
101 BOP(f, -1, INT_MIN, 1);
107 BOP(f2, -42, -23, 0);
110 BOP(f2, SHRT_MIN, SHRT_MIN, 0);
111 BOP(f2, SHRT_MIN, -1, 0);
112 BOP(f2, -1, SHRT_MIN, 0);
118 BOP(f3, -42, -23, 1);
121 BOP(f3, SHRT_MIN, SHRT_MIN, 0);
122 BOP(f3, SHRT_MIN, -1, 1);
123 BOP(f3, -1, SHRT_MIN, 0);
126 TOP(f4, -1, -2, -3, 0);
127 TOP(f4, SHRT_MIN, SHRT_MIN, -1, 1);
128 TOP(f4, SHRT_MIN, SHRT_MIN, SHRT_MIN, 1);
129 TOP(f4, SHRT_MAX, SHRT_MIN, SHRT_MAX, 1);
130 TOP(f4, SHRT_MIN, SHRT_MIN, SHRT_MAX, 1);
131 TOP(f4, 13, 42, SHRT_MAX, 1);
135 BOP(g, UINT_MAX, UINT_MAX, 1048575);
137 BOP(g, 12345, 54321, 5);
139 BOP(g2, UINT_MAX, UINT_MAX, 5);
141 BOP(g2, 12345, 54321, 1);
143 BOP(imp, UINT_MAX, UINT_MAX, 1);
145 BOP(imp, 12345, 54321, 1);
148 BOP(eq, UINT_MAX, UINT_MAX, 0);
150 BOP(eq, 12345, 54321, 1);
153 BOP(neq, UINT_MAX, UINT_MAX, 1);
155 BOP(neq, 12345, 54321, 0);
159 TOP(g3, -1, -2, -3, -1);
160 TOP(g3, INT_MIN, INT_MIN, -1, -1);
161 TOP(g3, INT_MIN, INT_MIN, INT_MIN, INT_MIN);
162 TOP(g3, INT_MAX, INT_MIN, INT_MAX, INT_MAX);
163 TOP(g3, INT_MIN, INT_MIN, INT_MAX, -1);
164 TOP(g3, 13, 42, INT_MAX, INT_MAX);
185 BOP(c, SHRT_MIN, SHRT_MIN, 1);
186 BOP(c, SHRT_MIN, -1, 1);
187 BOP(c, -1, SHRT_MIN, 0);
193 BOP(c2, -42, -23, 1);
196 BOP(c2, SHRT_MIN, SHRT_MIN, 0);
197 BOP(c2, SHRT_MIN, -1, 1);
198 BOP(c2, -1, SHRT_MIN, 0);
204 BOP(c3, -42, -23, 1);
207 BOP(c3, SHRT_MIN, SHRT_MIN, 1);
208 BOP(c3, SHRT_MIN, -1, 1);
209 BOP(c3, -1, SHRT_MIN, 1);
215 BOP(c4, -42, -23, 0);
218 BOP(c4, SHRT_MIN, SHRT_MIN, 1);
219 BOP(c4, SHRT_MIN, -1, 0);
220 BOP(c4, -1, SHRT_MIN, 0);