根据C++11标准[c.math],
例如,如果两个参数都为零,则
在C99中,许多行为也取决于是否定义了
然而,似乎在C++11标准中没有提到
我认为
<cmath>
头文件与标准C库的头文件<math.h>
相同。(当然,有一些区别,例如命名空间、重载等可以在此忽略。)根据C99标准附录F,“定义了__STDC_IEC_559__
的实现应符合附录F中的规定。”例如,如果两个参数都为零,则
atan2
可能会导致域错误,但是如果定义了__STDC_IEC_559__
,则不应该出现这种情况。在C99中,许多行为也取决于是否定义了
__STDC_IEC_559__
。然而,似乎在C++11标准中没有提到
__STDC_IEC_559__
。那么,C++实现是否应符合附录F中的规定呢?我认为
std::numeric_limits<T> ::is_iec559()
是一个替代方案,但它似乎只涉及类型。