我在哪里可以检查Python的数学函数?

时间:2011-03-29 17:03:10

标签: python math sqrt

我想看看Python计算平方根的方式,所以我试图找到math.sqrt()的定义,但我无法在任何地方找到它。我查看了_math.cmathmodule.c和其他地方。

我知道python使用C的数学函数,但这些函数是在Python发行版中的某个地方,还是在其他地方链接到代码?我使用的是Mac OS X.

math.sqrt()中的算法在哪里?

4 个答案:

答案 0 :(得分:13)

这取决于实施。 CPython使用标准C库中的数学函数。 Jython最有可能使用Java的数学方法。等等。

实际上,Python与数学函数的实际实现无关。这些与IEEE 754更相关,它现在几乎专门用于表示计算机中的浮点数。

无论如何,就CPython而言,它的math模块只是C函数(页面底部的prooflink)的一个薄包装器。 C函数作为标准C库的一部分实现。它通常包含在OS发行版中,并且很可能以二进制形式分发,没有源代码。另请注意,许多微处理器都对这些操作中的某些操作有专门的指令,您的编译器可能会使用它们而不是跳转到C库中的实现。

我无法告诉您系统上标准C库中使用的确切算法。解释了一些可能的算法here

在OS X的特定情况下,数学函数存在于libSystem.dylib中,遗憾的是它不是开源的(只有stub code available on Apple's Open Source site)。但是,如果您感兴趣,可以将其拆解 - 在当前系统上,尝试例如。

otool -tvV /usr/lib/system/libsystem_m.dylib

答案 1 :(得分:2)

有些模块是用C语言编写的,而不是用python编写的,所以你将无法找到.py文件。有关这些的列表,您可以使用:

import sys print sys.builtin_module_names

由于它是用C语言编写的,因此您必须在源代码中找到它。如果你有源它已经在modules目录中。

答案 2 :(得分:-1)

答案 3 :(得分:-4)

我不确定在哪里可以找到Python使用的确切算法,但我希望这对您有所帮助。在Python中计算平方根的最简单方法是使用**(幂)运算符。我不知道你用指数做了多少工作,但是平方根与把一些东西放到一半的力量上相同。因此,如果这是真的,你可以使用:

print x**0.5

这将打印放在x位置的任何数字的平方根。当然,如果您使用的是Python 3,那么您需要将其编写为:

print(x**0.5)

这是制作算法来计算数字平方根的最简单方法。这可以在以下函数中实现:

sqrt(x):
    return x**0.5

对于其他根,例如立方根等,你可以使用这样的函数:

root(x, root):
    return x**root

当您将根号传递给函数时,请使用十进制形式的索引编号,例如:

2:0.5

3:0.33333333(经常性)

4:0.25

5:0.2

我希望你能看到这种模式。我也希望这对你有所帮助! :)