-1
私はmpmathの特殊関数にCコードからアクセスしたいと思います。 私は中間のpythonスクリプトを使ってそれを行う方法を知っています。例えば 、超幾何関数を評価するために、Cプログラム:mpmath関数を呼び出す方法がありますCpmから直接mpmathを呼び出す
from mpmath import *
def Gauss_2F1(a1, a2, b1, z):
hpg= hyp2f1(a1, a2, b1, z)
return hpg
:
#include <Python.h>
void main (int argc, char *argv[])
{
int npars= 4;
double a1, a2, b1, x, res;
PyObject *pName, *pModule, *pFunc, *pArgs, *pValue;
PyObject *pa1, *pa2, *pb1, *px;
a1= atof(argv[1]);
a2= atof(argv[2]);
b1= atof(argv[3]);
x= atof(argv[4]);
setenv("PYTHONPATH", ".", 1); // Set PYTHONPATH TO bin directory
Py_Initialize();
pa1= PyFloat_FromDouble(a1);
pa2= PyFloat_FromDouble(a2);
pb1= PyFloat_FromDouble(b1);
px= PyFloat_FromDouble(x);
pName = PyString_FromString("GGauss_2F1");
pModule = PyImport_Import(pName);
pFunc = PyObject_GetAttrString(pModule, "Gauss_2F1");
pArgs = PyTuple_Pack(npars, pa1, pa2, pb1, px);
pValue = PyObject_CallObject(pFunc, pArgs);
res= PyFloat_AsDouble(pValue);
printf("2F1(x)= %.15f\n", res);
}
は右GGauss_2F1.pyスクリプトを呼び出すことにより、すべての作品中間のpythonスクリプトに頼ることなく、Cから直接hyp2f1? mpmathモジュールは、コマンド
PyRun_SimpleString("from mpmath import *");
でインポートすることができることを私は推測しかし、どのように私は、実際の機能にアクセスできますか?
Cプログラムを書くなら、Pythonの代わりにCの任意精度の算術ライブラリを使ってみませんか? – user2357112
待ちます。あなたが書いたコードはすでにPythonモジュールをインポートし、そのモジュールで定義されている関数にアクセスし、引数をパックして関数を呼び出します。これは、あなたが仕事を遂行するために必要なすべてのツールを既に知っていることを意味します。ラッパーモジュールを書くのではなく、なぜそれらのツールを 'mpmath'モジュールに直接適用しなかったのですか? – user2357112
_ラッパーモジュールを書く代わりに、これらのツールをmpmathモジュールに直接適用したのはなぜですか?_ – rgaelzer