python源代码中的哪个是math.exp()定义的?

时间:2013-03-10 11:11:36

标签: python exp

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

1 个答案:

答案 0 :(得分: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函数实现本身完全取决于平台,而在现代硬件上通常需要处理 in hardware 。您必须转向该函数的软件版本才能找到在Python中实现此功能的起点。

您可以使用fdlibm实现作为这样一个起点,也许,这里是从该库中C语言中的exp函数实现的链接:

或者你可以参考这个实现:

相关问题