aboutsummaryrefslogtreecommitdiff
path: root/SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c')
-rw-r--r--SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c161
1 files changed, 161 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c b/SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c
new file mode 100644
index 00000000..c6f165c3
--- /dev/null
+++ b/SingleSource/Regression/C/gcc-c-torture/execute/cmpsf-1.c
@@ -0,0 +1,161 @@
+#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);
+}