我正在处理一些之前在Linux上用gcc编译的代码,但是在使用MS Visual C++ 2008编译时,math.h似乎没有包含所有相同的功能,尤其是(反)双曲正切的atanh函数。
我已经尝试了包括math.h、cmath和使用std::atanh,但是在谷歌/MSDN搜索中没有发现更多信息。是否有一个简单的头文件可用于包含这个函数?
错误C3861:找不到标识符'atanh'
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
}
atanh
函数。而 MSVC 2008 并没有包含太多(如果有的话)的 C++11 功能,这是可以理解的。你能升级到 MSVC 2012 吗?因为在那里已经包含了该函数。否则,可以尝试 Boost。 - Benjamin Lindley