Предположим, у меня есть следующая (MCVE ...) функция Cython
cimport cython
from scipy.linalg.cython_blas cimport dnrm2
cpdef double func(int n, double[:] x):
cdef int inc = 1
return dnrm2(&n, &x[0], &inc)
Тогда я не могу вызвать его для np.float32
массива x
.
Как я могу заставить func
принять double[:]
или float[:]
и позвонить dnrm2
или snrm2
в качестве альтернативы? Единственное решение, которое у меня есть в настоящее время, - это две функции, которые создают огромное количество дублирующегося кода.