我想知道如何在python中实现math.exp()
函数。 Python源代码中的math.exp()
定义在哪里?
答案 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
函数实现的链接:
或者你可以参考这个实现: