似乎 C 中的 atan2(0,0)
被定义为 this way 。 Python 只是将常见的三角函数委托(delegate)给底层的 C 实现,对吗?
最佳答案
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 标准行为。有一些关于这种效果的全面声明,例如文档顶部附近的这个:而这个靠近底部的:
尽管附件 F 不是定义 atan2 的标准的一部分。
关于python - 假设 atan2(0,0) 返回 0 是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55037585/