2015-01-12 5 views
2

Я пытаюсь выполнить вычисления сложных чисел с использованием cython. В примере кода я хотел бы рассчитать сложную экспоненциальную функцию комплексного числа. Проблема в том, что я не знаю, как умножить мое целое на мнимую единицу. Умножение на воображаемую единицу 1.0j python вызывает ошибки при выполнении cython.Сложные вычисления с использованием Cython

Вот мой код:

cdef extern from "math.h": 
    double complex cexp(double complex) 

def testfunction(): 
    cdef double n 
    n=3 
    cdef double complex res 
    res=cexp(n*1.0j) 
    return res 

А вот сообщение об ошибке:

complex.c: 678: 3: Примечание: ожидаемый 'сложный двойной', но аргумент типа " __pyx_t_double_complex '

ответ

5

Прежде всего, попробуйте сообщить о полной трассировке стека компиляции. На моей машине, я получаю очень полезно:

неявное объявление функции «¯cexp» [-Wimplicit-функция-декларация]

Оказывается, вы в том числе неправильный заголовок. cexp заявлено в <complex.h>, см. docs.

Просто измените свой код

cdef extern from "complex.h": 
    double complex cexp(double complex) 

и вы будете в порядке.

Смежные вопросы