Документация обсуждает с использованием Numba cfunc в качестве 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)
Однако это не работает, поскольку params должны быть voidptr/void* и они не могут быть преобразованы в double. У меня есть следующее сообщение об ошибке:
TypingError: Failed at nopython (nopython frontend)
Invalid usage of getitem with parameters (void*, int64)
* parameterized
Я не нашел никакой информации о том, как извлекать значения из void* в Numba. В C это должно быть что-то вроде a = *((double*) params) - возможно ли сделать то же самое в Numba?