(Кросс-пост от пользователей cython)
Я пытаюсь использовать FFTW для некоторого кода Cython. Я сталкиваюсь с проблемами при попытке указать указатель на fftw_complex (typedef to double[2]) на сложное представление памяти, а именно (минимальный пример)
cdef extern from "fftw3.h":
ctypedef double fftw_complex[2]
fftw_complex* fftw_alloc_complex(int N)
cdef foo(complex[::1] input):
complex_ny = fftw_alloc_complex(input.size)
(<complex[:self.ny]>complex_ny)[:] = input
# actual call to FFTW follows
терпит неудачу при приведении: «hmm.pyx:8:34: базовый тип указателя не соответствует базовому типу cython.array» (возможно, нельзя ожидать, что Cython будет знать, что double[2] может быть преобразован в комплекс, но. .. Что еще я могу сделать?)
PS: Если у кого-то есть опыт использования обертки pyFFTW напрямую из Cython, мне тоже интересно.
Заранее спасибо.