高精度(~200 sig figs)不完全伽马函数可在C中调用

时间:2014-08-06 17:59:05

标签: python c precision

我想知道是否有人知道任何允许非常高精度(200 + sig figs,最好是任意)不完整伽玛函数的库?到目前为止,我发现的唯一的东西是python的mpmath,但我不知道如何将它合并到C代码中,如果可能的话。

它可以是任何语言,只要我能以某种方式链接它并从C中调用它。

干杯

2 个答案:

答案 0 :(得分:1)

我认为GNU MP Bignum library正是您所寻找的。

您可以执行以下操作:

#include <stdio.h>
#include <gmp.h>
int main(int argc, char *argv[]) {
    mpz_t a, b, c;
    if (argc&lt3) {
        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)

作为替代路线,您可以使用支持批量运行的数学应用程序,例如MaximaMathematicaMatlab

我尝试了以下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"])