gpt4 book ai didi

c++ - GSL Dilogarithm函数在C++中的使用

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:23 25 4
gpt4 key购买 nike

我正在尝试使用 GSL 库为 C++ 程序提供的双对数函数。我知道如何为实参调用函数(返回实数):

gsl_sf_dilog(double x)

但在参数复杂的情况下,我不明白如何正确调用函数。 GSL 手册说,对于复杂的参数,函数调用如下:

int gsl_sf_complex_dilog_e (double r, double theta, gsl_sf_result *result_re, gsl_sf_result * result_im)

我想从程序中得到的是result_re:双对数的实部。但到目前为止,我所做的一切都出现了错误。

#include <iostream>
#include <gsl/gsl_sf_dilog.h>
#include <gsl/gsl_sf_result.h>
#include <cmath>
#include <complex>

int main (void)
{
double res1, res2;
double dilog = gsl_sf_complex_dilog_e(3.,M_PI/2., gsl_sf_result*res1,gsl_sf_result*res2);
return 0;
}

我在尝试编译时收到此错误:错误:预期在“*”标记之前的主表达式错误:表达式列表在初始化程序 [-fpermissive] 中被视为复合表达式

谁能告诉我如何让这个功能发挥作用?谢谢

最佳答案

您需要传入指向 gsl_sf_result 的指针结构不会像您尝试的那样加倍。

您可以从这些结构的val 成员中获取结果。

您的代码的更正版本为:

#include <iostream>
#include <cmath>
#include <gsl/gsl_sf_dilog.h>
#include <gsl/gsl_sf_result.h>

int main()
{
gsl_sf_result re, im;
gsl_sf_complex_dilog_e(3., M_PI/2., &re, &im);

std::cout << re.val << " + " << im.val << "i" << std::endl;

return 0;
}

哪些输出:

-0.987666 + 2.05507i

关于c++ - GSL Dilogarithm函数在C++中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29419794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com