Question

I want to known how to implement the math.exp() function in python. Where in the Python source code is math.exp() defined?

Was it helpful?

Solution

This one is a little tricky.

The math module is implemented in a C module, mathmodule.c. At the end of that file there is a specific Python library structure that defines exp as implemented by math_exp:

static PyMethodDef math_methods[] = {
    # ...
    {"exp",             math_exp,       METH_O,         math_exp_doc},

but math_exp itself is actually defined via the FUNC1 macro, using the math_1 wrapper function to call the C library exp function with some error handling and type conversion:

FUNC1(exp, exp, 1,
     "exp(x)\n\nReturn e raised to the power of x.")

However, the C function implementation itself is entirely platform dependent, and on modern hardware is usually taken care of in hardware. You would have to turn to a software version of the function to find a starting point to implement this in Python.

You could use the fdlibm implementation as such a starting point, perhaps, here is a link to the exp function implementation in C from that library:

or you could refer to this implementation instead:

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top