Cómo pasar parámetros adicionales a numba cfunc pasado como LowLevelCallable a scipy.integrate.quad
La documentacióndiscute usando numba'scfunc
s comoLowLevelCallable
argumento descipy.integrate.quad
. Necesito lo mismo con parámetro adicional.
Básicamente estoy tratando de hacer algo como esto:
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)
Sin embargo, no funciona porqueparams
se supone que sonvoidptr
/void*
y no se pueden transformar adouble
. Tengo el siguiente mensaje de error:
TypingError: Failed at nopython (nopython frontend)
Invalid usage of getitem with parameters (void*, int64)
* parameterized
No encontré ninguna información sobre cómo extraer valores devoid*
en Numba En C, debería ser algo comoa = *((double*) params)
- ¿Es posible hacer lo mismo en Numba?