我正在使用<complex>
C++頭,並且需要知道返回複數的相位角的std::arg
函數的範圍。即,它是[-pi,pi],[0,2 * pi]還是別的?標準中的範圍是否有保證?函數std :: arg()的範圍是什麼?
AFAICT,std::arg
基本上只是包裝atan2
,我認爲保證範圍是[-pi,pi]。 C++的所有兼容實現都是如此嗎?
我正在使用<complex>
C++頭,並且需要知道返回複數的相位角的std::arg
函數的範圍。即,它是[-pi,pi],[0,2 * pi]還是別的?標準中的範圍是否有保證?函數std :: arg()的範圍是什麼?
AFAICT,std::arg
基本上只是包裝atan2
,我認爲保證範圍是[-pi,pi]。 C++的所有兼容實現都是如此嗎?
的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()
的定義是在標準C(7.12.4.4),其指定了第4段:
的
atan2
函數在區間返回反正切y/x
[-π,+π弧度。
:Y/X,在區間[-pi,+π弧度的 http://www.cplusplus.com/reference/cmath/atan2/
返回值 主反正切。
因此,如果std:arg()
給出了atan2
響應,就像它應該的那樣,您應該在任何兼容系統上得到您所希望的。
謝謝,我想我會小心行事,不作任何假設。 –