Index: /libpipi/trunk/pipi/filter/median.c
===================================================================
--- /libpipi/trunk/pipi/filter/median.c	(revision 3563)
+++ /libpipi/trunk/pipi/filter/median.c	(revision 3564)
@@ -27,13 +27,10 @@
 #include "pipi_internals.h"
 
-static int cmpint(void const *i1, void const *i2)
+static int cmpdouble(void const *i1, void const *i2)
 {
-    /* On Linux amd64, this is 20 to 30 % faster than using a real
-     * comparison (which wouldn't work on Windows since it expects both
-     * negative and positive values), a ternary operator, or floats instead
-     * of doubles. */
-    union { int32_t i; double d; } u;
-    u.d = *(double const *)i1 - *(double const *)i2;
-    return u.i;
+    double a = *(double const *)i1;
+    double b = *(double const *)i2;
+
+    return (a > b) - (a < b);
 }
 
@@ -110,10 +107,10 @@
 
             /* Sort the list */
-            qsort(list, size, sizeof(double), cmpint);
+            qsort(list, size, sizeof(double), cmpdouble);
             if(!gray)
             {
-                qsort(list + size, size, sizeof(double), cmpint);
-                qsort(list + 2 * size, size, sizeof(double), cmpint);
-                qsort(list + 3 * size, size, sizeof(double), cmpint);
+                qsort(list + size, size, sizeof(double), cmpdouble);
+                qsort(list + 2 * size, size, sizeof(double), cmpdouble);
+                qsort(list + 3 * size, size, sizeof(double), cmpdouble);
             }
 
