0
を渡すために、GSLとのctypesを使用して、のシグネチャは次のとおりです。GSLのドキュメントによると、配列
double gsl_stats_correlation (const double data1[],
const size_t stride1,
const double data2[],
const size_t stride2,
const size_t n)
私はPyPyからそれを呼び出すようにしてみてください。私のマシン上で
from ctypes import CDLL, RTLD_GLOBAL
gslcblas = CDLL('libgslcblas.0.dylib',mode=RTLD_GLOBAL)
libgsl = CDLL('/usr/local/lib/libgsl.0.dylib')
from ctypes import c_double, c_size_t, pointer
a1 = (c_double * 5)(1, 2, 3, 4, 5)
a2 = (c_double * 5)(1, 2, 3, 6, 5)
print(libgsl.gsl_stats_correlation(a1, c_size_t(1),
a2, c_size_t(1), c_size_t(5)))
結果それが実行するための実行から変わるものの、現時点では1086463496です。それは明らかに正しいものではありません。私は間違って何をしていますか?関数呼び出しを次のように変更すると、
libgsl.gsl_stats_correlation(pointer(a1), c_size_t(1),
pointer(a2), c_size_t(1), c_size_t(5)))
という結果になります。あなたはこのように機能のrestype
を設定する必要が