Index: uspace/app/tester/float/softfloat1.c
===================================================================
--- uspace/app/tester/float/softfloat1.c	(revision 000494d9d0a5a23cccfd8c2855dd74b89a011bdb)
+++ uspace/app/tester/float/softfloat1.c	(revision d1538a1fa3100ff880b0dd2c1b9e79fdec6ea762)
@@ -34,4 +34,5 @@
 #include <mul.h>
 #include <div.h>
+#include <comparison.h>
 #include <bool.h>
 #include "../tester.h"
@@ -45,4 +46,5 @@
 typedef void (* float_op_t)(float, float, float *, float_t *);
 typedef void (* double_op_t)(double, double, double *, double_t *);
+typedef void (* double_cmp_op_t)(double, double, cmptype_t *, cmptype_t *);
 typedef void (* template_t)(void *, unsigned, unsigned, cmptype_t *,
     cmptype_t *);
@@ -66,4 +68,14 @@
 	
 	return -a;
+}
+
+static int dcmp(double a, double b)
+{
+	if (a < b)
+		return -1;
+	else if (a > b)
+		return 1;
+
+	return 0;
 }
 
@@ -96,4 +108,13 @@
 	*pic = (cmptype_t) (c * PRECISION);
 	*pisc = (cmptype_t) (sc.val * PRECISION);
+}
+
+static void
+double_compare_template(void *f, unsigned i, unsigned j, cmptype_t *pis,
+    cmptype_t *piss)
+{
+	double_cmp_op_t op = (double_cmp_op_t) f;
+	
+	op(dop_a[i], dop_b[j], pis, piss);
 }
 
@@ -221,4 +242,25 @@
 }
 
+static void
+double_cmp_operator(double a, double b, cmptype_t *pis, cmptype_t *piss)
+{
+	*pis = dcmp(a, b);
+
+	double_t sa;
+	double_t sb;
+
+	sa.val = a;
+	sb.val = b;
+
+	if (is_double_lt(sa.data, sb.data))
+		*piss = -1;
+	else if (is_double_gt(sa.data, sb.data))
+		*piss = 1;
+	else if (is_double_eq(sa.data, sb.data))
+		*piss = 0;
+	else
+		*piss = 42;
+}
+
 const char *test_softfloat1(void)
 {
@@ -249,4 +291,8 @@
 		TPRINTF("%s\n", err);
 	}
+	if (!test_template(double_compare_template, double_cmp_operator)) {
+		err = "Double comparison failed";
+		TPRINTF("%s\n", err);
+	}
 	
 	return err;
