似乎C中的atan2(0,0)
已定义为this way。 Python只是将常见的三角函数委托给底层的C实现,对吧?
答案 0 :(得分:5)
Python文档未明确指定atan2(0,0),但是CPython implementation会尽力确保特殊情况遵循C99,即使底层C库没有。这包括一个处理atan2(0,0)返回0.0的代码路径:
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标准定义的数学函数的访问。
和靠近底部的那个:
在特殊情况下,行为应遵循C99标准的附录F。
尽管附件F不是定义atan2的标准的一部分。
答案 1 :(得分:2)
正如@ user2357112所说,文档未指定。如果您需要详细记录的内容,请使用numpy.arctan2
-请参阅https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.arctan2.html