2013-03-10 36 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:

,或者你可以參考改爲: