Rename math.sum to math.fsum
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index e481d30..ef33dab 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -352,7 +352,7 @@
 
 /* Extend the partials array p[] by doubling its size. */
 static int                          /* non-zero on error */
-_sum_realloc(double **p_ptr, Py_ssize_t  n,
+_fsum_realloc(double **p_ptr, Py_ssize_t  n,
              double  *ps,    Py_ssize_t *m_ptr)
 {
 	void *v = NULL;
@@ -370,7 +370,7 @@
 			v = PyMem_Realloc(p, sizeof(double) * m);
 	}
 	if (v == NULL) {        /* size overflow or no memory */
-		PyErr_SetString(PyExc_MemoryError, "math sum partials");
+		PyErr_SetString(PyExc_MemoryError, "math.fsum partials");
 		return 1;
 	}
 	*p_ptr = (double*) v;
@@ -409,7 +409,7 @@
 */
 
 static PyObject*
-math_sum(PyObject *self, PyObject *seq)
+math_fsum(PyObject *self, PyObject *seq)
 {
 	PyObject *item, *iter, *sum = NULL;
 	Py_ssize_t i, j, n = 0, m = NUM_PARTIALS;
@@ -421,7 +421,7 @@
 	if (iter == NULL)
 		return NULL;
 
-	PyFPE_START_PROTECT("sum", Py_DECREF(iter); return NULL)
+	PyFPE_START_PROTECT("fsum", Py_DECREF(iter); return NULL)
 
 	for(;;) {           /* for x in iterable */
 		assert(0 <= n && n <= m);
@@ -431,13 +431,13 @@
 		item = PyIter_Next(iter);
 		if (item == NULL) {
 			if (PyErr_Occurred())
-				goto _sum_error;
+				goto _fsum_error;
 			break;
 		}
 		x = PyFloat_AsDouble(item);
 		Py_DECREF(item);
 		if (PyErr_Occurred())
-			goto _sum_error;
+			goto _fsum_error;
 
 		xsave = x;
 		for (i = j = 0; j < n; j++) {       /* for y in partials */
@@ -462,8 +462,8 @@
 				   summands */
 				if (Py_IS_FINITE(xsave)) {
 					PyErr_SetString(PyExc_OverflowError,
-					      "intermediate overflow in sum");
-					goto _sum_error;
+					      "intermediate overflow in fsum");
+					goto _fsum_error;
 				}
 				if (Py_IS_INFINITY(xsave))
 					inf_sum += xsave;
@@ -471,8 +471,8 @@
 				/* reset partials */
 				n = 0;
 			}
-			else if (n >= m && _sum_realloc(&p, n, ps, &m))
-				goto _sum_error;
+			else if (n >= m && _fsum_realloc(&p, n, ps, &m))
+				goto _fsum_error;
 			else
 				p[n++] = x;
 		}
@@ -481,10 +481,10 @@
 	if (special_sum != 0.0) {
 		if (Py_IS_NAN(inf_sum))
 			PyErr_SetString(PyExc_ValueError,
-					"-inf + inf in sum");
+					"-inf + inf in fsum");
 		else
 			sum = PyFloat_FromDouble(special_sum);
-		goto _sum_error;
+		goto _fsum_error;
 	}
 
 	hi = 0.0;
@@ -518,7 +518,7 @@
 	}
 	sum = PyFloat_FromDouble(hi);
 
-_sum_error:
+_fsum_error:
 	PyFPE_END_PROTECT(hi)
 	Py_DECREF(iter);
 	if (p != ps)
@@ -528,7 +528,7 @@
 
 #undef NUM_PARTIALS
 
-PyDoc_STRVAR(math_sum_doc,
+PyDoc_STRVAR(math_fsum_doc,
 "sum(iterable)\n\n\
 Return an accurate floating point sum of values in the iterable.\n\
 Assumes IEEE-754 floating point arithmetic.");
@@ -1021,6 +1021,7 @@
 	{"floor",	math_floor,	METH_O,		math_floor_doc},
 	{"fmod",	math_fmod,	METH_VARARGS,	math_fmod_doc},
 	{"frexp",	math_frexp,	METH_O,		math_frexp_doc},
+	{"fsum",	math_fsum,	METH_O,		math_fsum_doc},
 	{"hypot",	math_hypot,	METH_VARARGS,	math_hypot_doc},
 	{"isinf",	math_isinf,	METH_O,		math_isinf_doc},
 	{"isnan",	math_isnan,	METH_O,		math_isnan_doc},
@@ -1034,10 +1035,9 @@
 	{"sin",		math_sin,	METH_O,		math_sin_doc},
 	{"sinh",	math_sinh,	METH_O,		math_sinh_doc},
 	{"sqrt",	math_sqrt,	METH_O,		math_sqrt_doc},
-	{"sum",		math_sum,	METH_O,		math_sum_doc},
 	{"tan",		math_tan,	METH_O,		math_tan_doc},
 	{"tanh",	math_tanh,	METH_O,		math_tanh_doc},
- 	{"trunc",	math_trunc,	METH_O,		math_trunc_doc},
+	{"trunc",	math_trunc,	METH_O,		math_trunc_doc},
 	{NULL,		NULL}		/* sentinel */
 };