C中的atan2(0,0)
似乎是定义为这边请的。Python只是将常见的三角函数委托给底层的C实现,对吗?
发布于 2019-03-06 22:51:10
Python没有显式地指定atan2(0,0),但是CPython实现会做出特定的努力,以确保特殊情况遵循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的标准的一部分。
发布于 2019-03-06 22:54:37
正如@ said 2357112所述,docs没有指定这一点。如果您需要一些详细的文档-使用numpy.arctan2
-参见https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.arctan2.html中的备注部分
https://stackoverflow.com/questions/55037585
复制相似问题