655a656,686 > static PyObject * > math_expm1(PyObject *self, PyObject *arg) > { > double x = PyFloat_AsDouble(arg); > if (PyErr_Occurred()) > return NULL; > double k = 2.; > double s = x; > double r = x; > double u0; > double u1; > if (fabs(x) < log(2.)) { > do { > u0 = x/k*s; > u1 = x/(k+1)*u0; > s = u0; > r += u0; > k++; > } while (fabs(u0)>fabs(u1)); > } > else { > r = exp(x) -1; > } > return PyFloat_FromDouble(r); > > } > > PyDoc_STRVAR(math_expm1_doc, > "expm1(x)\n\n\ > Return exp(x) minus 1 for small x"); > 1366a1398 > {"expm1", math_expm1, METH_O, math_expm1_doc}, 1408a1441 > PyModule_AddObject(m, "C", PyFloat_FromDouble(Py_MATH_C));