megengine.functional.atan2¶
- atan2(y, x)[源代码]¶
逐元素 \(\arctan(\frac{y}{x})\) 函数。
对输入张量 \(x\) 的每个元素 \(x_i\) 以及输入张量 \(y\) 的相应元素 \(y_i\) 计算正切函数的反函数的近似值。
- 参数
y – 第一个输入张量,其元素为被除数。应具有数值数据类型。
x – 第二个输入张量,其元素为除数。必须与 x 相容(见 广播机制与规则 )。应具有数值数据类型。
- 返回
一个包含 \(y/x\) 中每个元素的反正切的张量。
特殊的案例
atan2
与底层 C 语言库中的atan2
函数相同。以下特殊值在 C 语言标准中定义:对于浮点数的操作,
如果 \(y\) 是 +/-0` 并且 \(x\) 是
+0
,那么结果是+/-0
。如果 \(y\) 是
+/-0
并且 \(x\) 是-0
,那么结果是+/-π
。如果 \(y\) 大于
0
并且 \(x\) 是+/-infinity
,那么结果是+0/+π
。如果 \(y\) 小于
0
并且 \(x\) 是+/-infinity
,那么结果是-0/-π
。如果 \(y\) 是
+/-infinity` 并且 :math:`x` 是 ``+infinity
,那么结果是+/-(π/4)
。如果 \(y\) 是
+/-infinity` 并且 :math:`x` 是 ``-infinity
,那么结果是+/-(3π/4)
。
注意
+0
和-0
是不同的浮点数,+inf
和-inf
同理。实际案例
>>> F.atan2(0, 1) # equals to atan(0) Tensor(0.0, device=xpux:0)
逐元素反正切函数:
>>> y = Tensor([0, 1, -1]) >>> x = Tensor([1, 1, 1]) >>> F.atan2(y, x) Tensor([ 0. 0.7854 -0.7854], device=xpux:0)