Como passar parâmetros adicionais para numba cfunc passados como LowLevelCallable para scipy.integrate.quad
A documentaçãodiscute usando numbacfunc
s comoLowLevelCallable
argumento descipy.integrate.quad
. Eu preciso da mesma coisa com parâmetro adicional.
Estou basicamente tentando fazer algo assim:
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)
No entanto, não funciona, porqueparams
deveria servoidptr
/void*
e eles não podem ser transformados emdouble
. Eu tenho a seguinte mensagem de erro:
TypingError: Failed at nopython (nopython frontend)
Invalid usage of getitem with parameters (void*, int64)
* parameterized
Não encontrei nenhuma informação sobre como extrair valores devoid*
em Numba. Em C, deve ser algo comoa = *((double*) params)
- é possível fazer o mesmo no Numba?