MS Visual C ++中缺少atanh arc-hyperbolic tangent函数

时间:2013-03-21 03:47:19

标签: c++ math

我正在处理之前使用gcc编译器在Linux上编译的一些代码,并且在使用MS Visual C ++ 2008进行编译时,math.h似乎不包含所有相同的功能,特别是(反向)arc-双曲正切 atanh 函数。

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

  

错误C3861:'atanh':未找到标识符

2 个答案:

答案 0 :(得分:5)

以下是各种版本的数学库中包含的内容和内容。

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

e.g。

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

答案 1 :(得分:2)

根据this,atanh是在C ++ 11中引入的。自从2011年推出C ++ 11以来,您可能无法在VS 2008中使用它。