Я слежу за этой веткой, и она хорошо решена: Сложные числа в Cython - I или 1j?
Однако, когда я пытался, это просто не работает. Это мой довольно простой пример:
cdef extern from "<complex.h>" nogil:
double cos( double x )
double sin( double x )
double complex I
@cython.boundscheck(False) # turn off bounds-checking for entire function
@cython.wraparound (False) # turn off negative index wrapping for entire function
@cython.cdivision (True )
cdef double complex c_exp_i (double z) nogil:
return cos( z ) + sin( z ) * I
Я получаю такое сообщение об ошибке:
error C2676: binary '*': '__pyx_t_double_complex' does not define this operator or a conversion to a type acceptable to the predefined operator
Я не вижу, что я делаю неправильно / отличается от предыдущего поста. Есть идеи, как заставить это работать? РЕДАКТИРОВАТЬ: Это больше любопытство, чем цель эффективности.
EDIT2: Использование MSV C 2017, использование C ++ в python файл setup.py.