看起来在C语言中atan2(0,0)
是这样定义的(参考链接)。Python只是将常见的三角函数委托给底层的C实现,对吗?
if (Py_IS_INFINITY(x) || y == 0.) {
if (copysign(1., x) == 1.)
/* atan2(+-y, +inf) = atan2(+-0, +x) = +-0. */
return copysign(0., y);
...
math
模块中提供的与 C 标准库函数对应的函数应该符合 C 标准行为。文档顶部附近有一个类似于这样的概括性声明,如下所示:
底部也有一个类似于这样的声明:此模块始终可用。它提供了访问由 C 标准定义的数学函数的途径。
虽然附录 F 不是定义 atan2 的标准部分。在异常情况下的行为遵循 C99 标准的附录 F(如果适用)。
numpy
函数的一个不好的地方是它们比math
库中相应的函数慢,这是因为数组相关的开销。但是当对数据数组应用相同的操作时,它会更快。 - undefined