我正在使用<complex>
C ++标头,并且需要知道std::arg
函数的范围,该函数返回复数的相角。即,是[-pi,pi],[0,2 + pi]还是其他什么?是否有关于标准范围的保证?
AFAICT,std::arg
基本上只包裹atan2
,我认为保证范围为[-pi,pi]。是否适用于C ++的所有兼容实现?
答案 0 :(得分:2)
std::arg()
的规范并没有真正提供太多细节(26.4.7 [complex.value.ops]第4段):
template<class T> T arg(const complex<T>& x);
返回:相位角为
x
或atan2(imag(x), real(x))
。
atan2()
的定义在第4段中规定的C标准(7.12.4.4)中:
atan2
函数在区间[-π,+π]弧度中返回arctany/x
。
答案 1 :(得分:0)
自: http://www.cplusplus.com/reference/cmath/atan2/
返回值 y / x的主要反正切,在[-pi,+ pi]弧度区间内。
因此,如果std:arg()
给出了atan2
响应,那么您应该在任何合规系统上获得您希望的响应。