170 lines
3.3 KiB
C
170 lines
3.3 KiB
C
#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,
|
|
FLOAT_MAX,
|
|
FLOAT_MIN,
|
|
0.0000000000001F,
|
|
123456789.0F,
|
|
-987654321.0F
|
|
};
|
|
|
|
int correct_results[] =
|
|
{
|
|
T, F, F, T, F, T, 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, T, F, F, T, T, F, F, T,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, F, T, T, F, T, F, 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, T, F,
|
|
T, F, F, T, F, T, F, T, F, T,
|
|
F, T, F, T, T, F, T, F, 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, T, F, F, T,
|
|
F, T, T, F, F, T, T, F, F, T,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
T, F, F, T, F, T, F, T, 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, T, F, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, F, T, T, F, F, T, T, F,
|
|
F, T, F, T, T, F, F, T, T, F,
|
|
F, T, F, T, T, F, F, T, T, F,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
T, F, F, T, F, T, F, T, F, T,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, F, T, T, F, F, T, T, F,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, 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,
|
|
F, T, T, F, F, T, T, F, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, F, T, T, F, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
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, T, F,
|
|
T, F, F, T, F, T, F, T, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
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, T, F, T, F, 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, T, F, F, T,
|
|
T, F, F, T, F, T, F, T, F, T,
|
|
F, T, F, T, T, F, T, F, F, T,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
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, T, F,
|
|
F, T, F, T, T, F, F, T, T, F,
|
|
F, T, T, F, F, T, F, T, T, F,
|
|
T, F, F, T, F, T, F, T, F, T
|
|
};
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
int i, j, *res = correct_results;
|
|
|
|
for (i = 0; i < 8; i++)
|
|
{
|
|
long arg0 = args[i];
|
|
for (j = 0; j < 8; j++)
|
|
{
|
|
long 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 ();
|
|
if (fltu (arg0, arg1) != *res++)
|
|
abort ();
|
|
if (fgeu (arg0, arg1) != *res++)
|
|
abort ();
|
|
if (fgtu (arg0, arg1) != *res++)
|
|
abort ();
|
|
if (fleu (arg0, arg1) != *res++)
|
|
abort ();
|
|
}
|
|
}
|
|
exit (0);
|
|
}
|