2013-03-10 1 views
3

Je veux savoir comment implémenter la fonction math.exp() en python. Où dans le code source Python est math.exp() défini?Où le code source python est math.exp() défini?

+1

@PaulC: vous êtes trop serviable! Vous encouragez simplement les gens à faire en sorte que les SO utilisent un moteur de recherche en leur nom. –

+0

@PaulC Tks. J'avais une recherche sur google avant de poser cette question. Je n'ai pas pu trouver le code source de la fonction math.exp(). donc ... –

+1

Celui-ci est en fait difficile à trouver, mais il aurait aidé si vous montriez où vous aviez l'air de ne pas le trouver. C'est défini en C; l'entrée de la structure Python se trouve dans le fichier ['mathmodule.c'] (http://hg.python.org/cpython/file/tip/Modules/mathmodule.c#l1561). –

Répondre

12

Celui-ci est un peu difficile.

Le module math est implémenté dans un module C, mathmodule.c. A la fin de ce fichier il y a une structure de la bibliothèque Python spécifique qui définit exp as implemented by math_exp:

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

mais math_exp lui-même est en fait défini par le FUNC1 macro, en utilisant le math_1 wrapper function d'appeler la C library exp function avec une gestion des erreurs et la conversion de type:

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

Cependant, la mise en œuvre de la fonction C lui-même est entièrement dépendant de la plateforme, et sur le matériel moderne est généralement pris en charge dans le matériel . Vous devrez vous tourner vers une version logicielle de la fonction pour trouver un point de départ pour l'implémenter en Python.

Vous pouvez utiliser la mise en œuvre fdlibm comme un point de départ, peut-être, voici un lien vers la mise en œuvre de la fonction exp en C de cette bibliothèque:

ou vous pouvez consulter à cette mise en œuvre à la place: