使用Cython进行复值计算

Han*_*bel 2 cython

我正在尝试使用cython进行复数计算.在示例代码中,我想计算复数的复指数函数.问题是我不知道如何将我的整数乘以虚数单位.乘以python的虚部1.0j会在执行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
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

complex.c:678:3:注意:预期'复数double'但参数类型为'__pyx_t_double_complex'

gg3*_*349 6

首先,尝试报告编译的完整堆栈跟踪.在我的机器上,我得到了一个非常有用的:

隐式声明函数'cexp'[-Wimplicit-function-declaration]

事实证明你包含了错误的标题.cexp声明<complex.h>,请参阅文档.

只需将您的代码更改为

cdef extern from "complex.h":
    double complex cexp(double complex)
Run Code Online (Sandbox Code Playgroud)

你会没事的