diff --git a/Misc/NEWS b/Misc/NEWS
index 3fdef4b..2d02ed1 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and builtins
 -----------------
 
+- Implemented rich comparisons for floats, which seems to make
+  comparisons involving NaNs somewhat less surprising when the
+  underlying C compiler actually implements C99 semantics.
+
 - Optimized list.extend() to save memory and no longer create
   intermediate sequences.  Also, extend() now pre-allocates the
   needed memory whenever the length of the iterable is known in
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 7476ac7..3f06b4c 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -360,6 +360,40 @@
 	return (i < j) ? -1 : (i > j) ? 1 : 0;
 }
 
+static PyObject*
+float_richcompare(PyObject *v, PyObject *w, int op)
+{
+	double i, j;
+	int r = 0;
+
+	CONVERT_TO_DOUBLE(v, i);
+	CONVERT_TO_DOUBLE(w, j);
+
+	PyFPE_START_PROTECT("richcompare", return NULL)
+	switch (op) {
+	case Py_EQ:
+		r = i==j;
+		break;
+	case Py_NE:
+		r = i!=j;
+		break;
+	case Py_LE:
+		r = i<=j;
+		break;
+	case Py_GE:
+		r = i>=j;
+		break;
+	case Py_LT:
+		r = i<j;
+		break;
+	case Py_GT:
+		r = i>j;
+		break;
+	}
+	PyFPE_END_PROTECT(a)
+	return PyBool_FromLong(r);
+}
+
 static long
 float_hash(PyFloatObject *v)
 {
@@ -834,7 +868,7 @@
 	float_doc,				/* tp_doc */
  	0,					/* tp_traverse */
 	0,					/* tp_clear */
-	0,					/* tp_richcompare */
+	(richcmpfunc)float_richcompare,		/* tp_richcompare */
 	0,					/* tp_weaklistoffset */
 	0,					/* tp_iter */
 	0,					/* tp_iternext */
