我正在使用以前在Linux上使用gcc编译器编译的某些代码,并且在使用MS Visual C++ 2008进行编译时,math.h似乎并未包含所有相同的功能,特别是(反)反双曲线正切atanh功能。

我试过使用std::atanh包括math.h,cmath,并且在google/MSDN搜索中找不到其他内容。有没有可以包含的简单头文件?

最佳答案

这是各种版本的数学库中包括的内容,不包括的内容。

Function  POSIX  old ISO  ISO C99  Microsoft(2008)
acos      Y      Y        Y        Y
acosh     Y      N        Y        N
asin      Y      Y        Y        Y
asinh     Y      N        Y        N
atan      Y      Y        Y        Y
atan2     Y      Y        Y        Y
atanh     Y      N        Y        N

您是否可以使用以下公式来实现自己的功能:
    asinh(x) = log(x + sqrt(x2 + 1))
    acosh(x) = log(x + sqrt(x2 - 1))
    atanh(x) = (log(1+x) - log(1-x))/2

例如
float atanh (float x)
{
   //implements: return (log(1+x) - log(1-x))/2
}

10-06 01:52