该文档讨论了使用numba的cfuncs作为LowLevelCallable参数scipy.integrate.quad.我需要额外的参数相同的东西.
我基本上试图做这样的事情:
import numpy as np
from numba import cfunc
import numba.types
voidp = numba.types.voidptr
def integrand(t, params):
a = params[0] # this is additional parameter
return np.exp(-t/a) / t**2
nb_integrand = cfunc(numba.float32(numba.float32, voidp))(integrand)
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,因为params它们应该是voidptr/ void*并且它们无法转换为double.我有以下错误消息:
TypingError: Failed at nopython (nopython frontend)
Invalid usage of getitem with parameters (void*, int64)
* parameterized
Run Code Online (Sandbox Code Playgroud)
我没有找到任何关于如何从void*Numba中提取值的信息.在C中,应该是这样的a = *((double*) params)- 在Numba中可以做同样的事情吗?