使用minunit.h
测试内置的gsl结构。
我写了以下测试:
static
char * test_gsl_polar_complex_number_struct()
{
double r = 0.325784;
double theta = 0.421329;
gsl_complex test_polr_complex_number = gsl_complex_polar ( r, theta );
printf("expected r: %f, actual r: %f\n", r, GSL_REAL(test_polr_complex_number));
mu_assert("real part of polar complex number does not match expected",
GSL_REAL(test_polr_complex_number) == r);
return 0;
}
我的测试失败,输出如下:
expected r: 0.325784, actual r: 0.297293
expected theta: 0.421329, actual theta: 0.133237
real part of polar complex number does not match expected
值得注意的是,完全相同的测试在矩形复杂结构上执行时没有错误。
答案 0 :(得分:2)
你有错误的期望。函数gsl_complex_polar()
使用极坐标复合形式给出的组件初始化复数:
此函数从极坐标表示(r,theta)返回复数z = r \ exp(i \ theta)= r(\ cos(\ theta)+ i \ sin(\ theta))
没关系,但GSL_REAL()
宏返回复数的实部。这与极坐标表示的r
分量不同。事实上,我引用的文档确切地告诉你它是什么:r cos(theta)
。