2013-03-10 39 views
3

我想知道如何在Python中实现math.exp()函数。在Python源代码中定义了math.exp()的位置?python源代码中的math.exp()定义在哪里?

+1

@PaulC:你太帮忙了!你只是鼓励人们让SOers代表他们使用搜索引擎。 – 2013-03-10 11:16:26

+0

@PaulC Tks。在问这个问题之前,我曾在谷歌上搜索过。我无法找到math.exp()函数源代码。所以... – 2013-03-10 11:25:44

+1

这一个实际上很难找到,但如果你显示你找不到的地方,它会有帮助。它在C中定义; Python结构的入口位于['mathmodule.c'文件]中(http://hg.python.org/cpython/file/tip/Modules/mathmodule.c#l1561)。 – 2013-03-10 11:43:18

回答

12

这是一个有点棘手。

math模块在C模块中实现,mathmodule.c。在该文件的末尾有特定的Python库结构,它定义exp as implemented by math_exp

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

math_exp本身实际上是经由FUNC1 macro定义,使用math_1 wrapper function调用C library exp function一些错误处理和类型转换:

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

然而,C函数实现本身是完全依赖于平台,并在现代硬件通常是在硬件照顾。你将不得不转向该函数的软件版本,以找到在Python中实现这一点的起点。

您可以使用fdlibm实现这样一个出发点,也许,这里是从图书馆到exp函数实现的链接在C:

,或者你可以参考改为: