我想知道是否有人知道任何允许非常高精度(200 + sig figs,最好是任意)不完整伽玛函数的库?到目前为止,我发现的唯一的东西是python的mpmath,但我不知道如何将它合并到C代码中,如果可能的话。
它可以是任何语言,只要我能以某种方式链接它并从C中调用它。
干杯
答案 0 :(得分:1)
我认为GNU MP Bignum library正是您所寻找的。 p>
您可以执行以下操作:
#include <stdio.h>
#include <gmp.h>
int main(int argc, char *argv[]) {
mpz_t a, b, c;
if (argc<3) {
printf("Please supply two numbers to add.\n");
return 1;
}
mpz_init_set_str (a, argv[1], 10);
mpz_init_set_str (b, argv[2], 10);
mpz_add (c, a, b);
printf("%s + %s => %s\n", argv[1], argv[2], mpz_get_str (NULL, 10, c));
return 0;
编译:{{1}}
答案 1 :(得分:0)
作为替代路线,您可以使用支持批量运行的数学应用程序,例如Maxima,Mathematica或Matlab。
我尝试了以下Maxima脚本:
fpprec : 200;
fpprintprec : 200;
bfloat(gamma_incomplete(2,bfloat(2.3)));
像这样运行:maxima -q -b ./incompletegamma.mc run
给出:
(%i1) batch("./gamma.mc")
read and interpret file: ./gamma.mc
(%i2) fpprec:200
(%o2) 200
(%i3) fpprintprec:1000
(%o3) 1000
(%i4) bfloat(gamma_incomplete(2,bfloat(2.3)))
(%o4) 3.3085418428525236227076532372691440857133290256546276037973522730841281\
226873248876116604879039570340226922621099906787322361219389317316508680513479\
116358485422369818232009561056364657588558639170139b-1
您可以使用system()
或call()
从python应用程序运行maxima脚本,如下所示:
from subprocess import call
call(["maxima", "-q -b ./incompletegamma.mc run"])