有一些数学运算可以从+/-无穷大中产生实数。例如,exp(-infinity) = 0
。在标准的C
库中是否有接受IEEE-754无限制(不会抛出异常或返回NaN)的数学函数标准?我在Linux系统上,并且对于glibc
的此类列表感兴趣。我在他们的在线手册中没有找到这样的列表。例如,他们关于exp
的文档没有提到如何处理-infinity
的情况。非常感谢任何帮助。
有一些数学运算可以从+/-无穷大中产生实数。例如,exp(-infinity) = 0
。在标准的C
库中是否有接受IEEE-754无限制(不会抛出异常或返回NaN)的数学函数标准?我在Linux系统上,并且对于glibc
的此类列表感兴趣。我在他们的在线手册中没有找到这样的列表。例如,他们关于exp
的文档没有提到如何处理-infinity
的情况。非常感谢任何帮助。
POSIX的math.h定义中的另请参阅部分链接到可接受域名的POSIX定义。
例如,fabs()
:
If x is ±0, +0 shall be returned.
If x is ±Inf, +Inf shall be returned.
我将提到的参见部分转换为StackOverflow-Markdown:
acos(), acosh(), asin(), atan(), atan2(), cbrt(), ceil(), cos(), cosh(), erf(), exp(), expm1(), fabs(), floor(), fmod(), frexp(), hypot(), ilogb(), isnan(), j0(), ldexp(), lgamma(), log(), log10(), log1p(), logb(), modf(), nextafter(), pow(), remainder(), rint(), scalb(), sin(), sinh(), sqrt(), tan(), tanh(), y0()
我贡献了搜索/替换/正则表达式技巧。现在我们只需要一个具备cURL技巧的人。
C99中它在附录F中:
F.9.3.1 The exp functions
-- exp(±0) returns 1.
-- exp(-∞) returns +0.
-- exp(+∞) returns +∞.
__STDC_IEC_559__
应符合本附录中的规范要求。
exp(-infinity)
吗?它会报错吗?会得到 NaN 或 0 吗? - Anders Abelexp
函数保证在输入为负无穷时输出为正零。 - Matstd::numeric_limits<double>::is_iec559
返回true
,则意味着你可以假设表示和语义都符合IEEE 754标准。但实际上你只能假设表示符合(例如考虑g++选项--fastmath
)。因此,就如@KerrekSB所说,你需要查阅实现的文档或者尝试一些东西来确定语义是否符合这个标准。祝好运。 - Cheers and hth. - Alf