Where in the python source code is math.exp() defined?

前端 未结 1 834
予麋鹿
予麋鹿 2021-01-03 11:32

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

相关标签:
1条回答
  • 2021-01-03 12:15

    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:

    • http://www.netlib.org/fdlibm/e_exp.c

    or you could refer to this implementation instead:

    • http://fossies.org/dox/glibc-2.17/sysdeps_2ieee754_2ldbl-128ibm_2e__expl_8c_source.html#l00135
    0 讨论(0)
提交回复
热议问题