函数std :: arg()的范围是多少?

时间:2014-01-12 22:46:13

标签: c++

我正在使用<complex> C ++标头,并且需要知道std::arg函数的范围,该函数返回复数的相角。即,是[-pi,pi],[0,2 + pi]还是其他什么?是否有关于标准范围的保证?

AFAICT,std::arg基本上只包裹atan2,我认为保证范围为[-pi,pi]。是否适用于C ++的所有兼容实现?

2 个答案:

答案 0 :(得分:2)

std::arg()的规范并没有真正提供太多细节(26.4.7 [complex.value.ops]第4段):

template<class T> T arg(const complex<T>& x);
     

返回:相位角为xatan2(imag(x), real(x))

atan2()的定义在第4段中规定的C标准(7.12.4.4)中:

  

atan2函数在区间[-π,+π]弧度中返回arctan y/x

答案 1 :(得分:0)

自: http://www.cplusplus.com/reference/cmath/atan2/

返回值 y / x的主要反正切,在[-pi,+ pi]弧度区间内。

因此,如果std:arg()给出了atan2响应,那么您应该在任何合规系统上获得您希望的响应。