作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么会出现这些错误? (我有一个 clang/g++
编译器。)
error: use of undeclared identifier 'ccos'
error: use of undeclared identifier 'csqrt'; did you mean 'sqrt'?
error: use of undeclared identifier 'cpow'; did you mean 'pow'?
等等。我已将我的功能声明为:
#include <complex>
double ghmc1AccNormalised( double ph, double r, double t, double th){
complex<double> numerator;
complex<double> denominator;
double E = exp(1);
numerator=-(cpow(E,t*((-2*r + r*ccos(th) + r* // ... etc
// what follows is 24MB of a horrible polynomial from Mathematica
...
denominator = cpow(2,0.3333333333333333) //... etc
return creal(numerator/denominator);
}
我正在努力确保正确处理虚变量。我花了很长时间查看各种帖子,但遇到以下问题:
inf
和 nan
的形式出现,而它们不应该出现ccos
、csqrt
等应该用于复杂参数使用复合体;
使用 std::complex;
std::complex
和 complex::
免责声明 这是我的第一个 c/c++
函数所以请忽略琐碎的问题,除非与问题直接相关
最佳答案
您正在使用 C 头文件 complex.h
中的函数,但您没有包含这些函数。但是 C++ header complex
为 cos
提供重载, sin
, pow
等*。您应该使用它们而不是它们的 C 对应物。
#include <complex>
int main()
{
std::complex<double> c{1, 2};
auto c2 = pow(c, 2);
auto cc = sqrt(c2);
}
* 请注意,它们位于 std
命名空间中,但 std::complex
也是如此,因此参数依赖查找 (ADL) 允许您调用它们没有 namespace 。
关于c++ - 为什么 `ccos` 、 `csqrt` 、 `cpow` 不被识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38730731/
为什么会出现这些错误? (我有一个 clang/g++ 编译器。) error: use of undeclared identifier 'ccos' error: use of undeclare
我是一名优秀的程序员,十分优秀!